当前位置: 首页 > news >正文

C#高级语法_委托

主从窗体之间的通信

主窗体:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApp1
{public partial class FrmMain : Form{public FrmMain(){InitializeComponent();}//2.根据委托定义方法private void ReceiveMsg(string msg, string consoleName){this.label1.Text += $"来自{consoleName}的消息:{msg}\r\n";}/// <summary>/// 创建子窗体/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button1_Click(object sender, EventArgs e){for (int i = 1; i < 4; i++){ Form1 form = new Form1($"子窗体{i}");//4.委托变量和方法关联form.delegateReceiveMsg += ReceiveMsg;form.Show();}}/// <summary>/// 关闭子窗体/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button3_Click(object sender, EventArgs e){// 遍历所有打开的窗体// 使用ToList()创建副本,避免在遍历中修改集合引发异常foreach (var form in Application.OpenForms.OfType<Form1>().ToList()){// 关闭子窗体form.Close();}}}//1.定义委托public delegate void DelegateMsgBtoA(string msg, string consoleName);
}

子窗体:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApp1
{public partial class Form1 : Form{//3.创建委托变量public DelegateMsgBtoA delegateReceiveMsg = delegate { };public Form1(){InitializeComponent();}public Form1(string name){InitializeComponent();        this.Text = name;}private void button1_Click(object sender, EventArgs e){//5.通过委托变量调用方法delegateReceiveMsg.Invoke(this.textBox1.Text, this.Text);}}
}
http://www.lryc.cn/news/623743.html

相关文章:

  • Windows平台Frida逆向分析环境完整搭建指南
  • 从需求到部署全套方案:餐饮服务许可证数据可视化分析系统的大数据技术实战
  • 发票识别工具,合并PDF提取信息
  • JavaScript字符串详解
  • 001.Redis 简介及安装
  • 【杂谈】-以质代量:谷歌主动学习范式重构AI训练逻辑
  • Mac(四)自定义按键工具 Hammerspoon 的安装和使用
  • vue封装请求拦截器 响应拦截器
  • SCAI采用公平发射机制成功登陆LetsBonk,60%代币供应量已锁仓
  • 智能合约里的 “拒绝服务“ 攻击:让你的合约变成 “死机的手机“
  • 数学建模 14 中心对数比变换
  • 原子操作及基于原子操作的shared_ptr实现
  • Leaflet赋能:WebGIS视角下的省域区县天气可视化实战攻略
  • 数据结构:二叉搜索树(Binary Search Tree)
  • ansible管理变量和事实
  • 《Python学习之文件操作:从入门到精通》
  • 剑指offer第2版——面试题5:替换空格
  • Java注解学习记录
  • 26. 值传递和引用传递的区别的什么?为什么说Java中只有值传递
  • 大模型对齐算法合集(一)
  • Zemax 中的透镜设计 - 像差理论
  • 评测系统构建
  • 深入分析 Linux PCI Express 子系统
  • 计算机网络 TCP time_wait 状态 详解
  • 10 SQL进阶-SQL优化(8.15)
  • Matlab课程实践——基于MATLAB设计的计算器软件(简单、科学、电工、矩阵及贷款计算)
  • esp32(自定义分区)coredump
  • C语言私人学习笔记分享
  • 关于第一次接触Linux TCP/IP网络相关项目
  • 使用Ansys Fluent进行倒装芯片封装Theta-JA热阻表征