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

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.xdnf.cn/news/18194.html

相关文章:

  • java基础(十)sql的mvcc
  • 字节 Golang 大模型应用开发框架 Eino简介
  • 进程互斥的硬件实现方法
  • 私人AI搜索新突破:3步本地部署Dify+Ollama+QwQ,搜索能力MAX
  • 《动手学深度学习v2》学习笔记 | 1. 引言
  • Nacos 注册中心学习笔记
  • C++入门自学Day11-- String, Vector, List 复习
  • Kafka 面试题及详细答案100道(23-35)-- 核心机制2
  • 3D打印——给开发板做外壳
  • 最新技术论坛技术动态综述
  • XF 306-2025 阻燃耐火电线电缆检测
  • 【Linux | 网络】高级IO
  • JMeter(进阶篇)
  • (一)Python + 地球信息科学与技术 (GeoICT)=?
  • CentOS7安装部署GitLab社区版
  • 第3章 Java NIO核心详解
  • Portkey-AI gateway 的一次“假压缩头”翻车的完整排障记:由 httpx 解压异常引发的根因分析
  • java八股文-(spring cloud)微服务篇-参考回答
  • FreeRTOS在中断服务例程(ISR)中使用队列
  • 小白成长之路-k8s部署discuz论坛
  • Python爬虫-解决爬取政务网站的附件,找不到附件链接的问题
  • Blender模拟结构光3D Scanner(二)投影仪内参数匹配
  • scikit-learn/sklearn学习|多任务套索回归MultiTaskLasso解读
  • The Network Link Layer: 无线传感器中Delay Tolerant Networks – DTNs 延迟容忍网络
  • C++---迭代器删除元素避免索引混乱
  • 最长回文子串问题:Go语言实现及复杂度分析
  • Flink Stream API核心概念继承体系
  • 代码随想录刷题Day34
  • 分治-归并-315.计算右侧小于当前元素的个数-力扣(LeetCode)
  • 42 C++ STL模板库11-容器4-forward_list