C#利用委托实现多个窗体间的传值

news/2025/10/11 17:13:00/文章来源:https://www.cnblogs.com/Dongmy/p/19135503

原文链接:https://zhuanlan.zhihu.com/p/559679569

要实现这样一个功能:父窗体创建了两个子窗体,子窗体1和子窗体2,1产生的数据要在2中显示出来。 因为这两个子窗体本身之间并没有直接关联,他们都是由父窗体new出来的,所以就想着1的数据先发给父窗体,父窗体再发给2。这样结构上比较清晰,也符合松耦合的模式。结构如下:

f6cafb4475d2ef44ba2fdc40d3340ce6_v2-d3270d717b694e5c7291cab84068c6e0_1440w

 窗体间数据传递的方法有多种,这里我们直接选择最被推荐的方法:委托(delegate)和事件(event)。

子窗体1发送消息给父窗体

在子窗体1中定义一个委托

public delegate void SendMsg(string msg);

再定义一个事件

public event SendMsg send;

点击发送按钮时,触发事件 

private void button1_Click(objectsender,EventArgse){  send(textBox1.Text); 
}

 完整代码 

public partial class Form_Child1:Form 
{public delegate void SendMsg(string msg); public event SendMsgsend; public Form_Child1() {InitializeComponent();} private  void  button1_Click(objectsender,EventArgse) { send(textBox1.Text); } 
}

  委托可以理解为方法的代理,当我需要调用方法时可以直接调用委托,而事件是绑定到委托上的。当事件被触发,就会运行我们最终想要执行的方法。

     上面子窗体1已经注册好了委托和事件,接下来需要父窗体订阅该事件。

    

private  Form_Child1  form_Child1;
public  Form1() 
{ 
InitializeComponent(); form_Child1=newForm_Child1();//实例化子窗体1 
form_Child1.send+=newForm_Child1.SendMsg(receiveChild1Msg);//订阅子窗体1的send事件 //也可以简写成如下格式 //form_Child1.send+=receiveChild1Msg; }

  其中receiveChild1Msg是委托代理的方法,也就是要最终执行的方法,需要定义并实现

private void receiveChild1Msg(string msg) 
{ transfer(msg);//此处写具体要做的事情 
}

  因为父窗体接收到子窗体1的消息后要转发给子窗体2,所以我们这里transfer(msg)做的事情就是把信息再转发出去,具体见后面解析。

父窗体转发消息给子窗体2

这回等于是父窗体给子窗体发消息,所以我们在父窗体中定义委托和事件,然后让子窗体2去订阅,代码如下,我们先去掉关于窗体1的那部分以方便观察。

private Form_Child2 form_Child2;
public delegate void TransferMsg(string msg);//定义转发消息的委托 
public event TransferMsg transfer;//定义事件 
public Form1() 
{ 
InitializeComponent(); 
form_Child2=newForm_Child2();//实例化子窗体2 
transfer+=newTransferMsg(form_Child2.getMsg);//子窗体2订阅transfer事件 //也可以简写成如下格式 //transfer=form_Child2.getMsg; }

  所以上面父窗体接收到子窗体1消息后的那个transfer(msg)就是为了触发transfer事件。这时候transfer事件被触发,子窗体2中的getMsg就会被执行

public void getMsg(string str) 
{BeginInvoke(newMethodInvoker(delegate{ listBox2.Items.Add(str); })); 
}

  信息就被接收到了,这样就完成了整个消息的传递过程。

效果:

356854c45eaf7ed5c6573310277a3108_v2-a4103b7ae1681b959a2cb4ba2c987cf1_b

 

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/934920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025常州微弧氧化批发厂家最新推荐榜:技术领先与优质服务双

2025常州微弧氧化批发厂家最新推荐榜:技术领先与优质服务双随着工业技术的不断进步,微弧氧化技术在金属表面处理领域中扮演着越来越重要的角色。微弧氧化技术通过在金属表面形成一层致密的陶瓷膜,不仅提高了材料的耐…

new操作符的手动实现

function myNew(constructor, ...args) { ​ const obj = Object.create(constructor.prototype);// 创建一个新对象并链接到构造函数的原型​const result = constructor.apply(obj, args);// 将构造函数的 this 指向…

JS使用Regex校验出现卡顿

背景 使用vue3+naive ui 开发网站,在写表单校验规则,其中URL校验项使用了regex,表达式写的有问题,在校验某些URL出现卡顿。最后使用浏览器内置URL类的构建函数来校验,放弃了正则。 REGEX探讨 /^(https?:\/\/)?(…

2025舒适轮胎厂家最新推荐榜:静音耐磨,驾驶体验再升级!

2025舒适轮胎厂家最新推荐榜:静音耐磨,驾驶体验再升级!随着汽车工业的不断发展,消费者对轮胎性能的要求也越来越高。除了基本的安全性和耐用性外,静音和舒适性成为了越来越多车主关注的重点。为了帮助大家更好地筛…

2025 净化铝型材十大品牌之一优选,推荐龙新铝业,最快24小时内发货

“车间急等铝材搭隔断,供应商说要等一周?”“刚发现型材精度不够,半导体车间根本用不了!” 在电子、制药等对洁净环境要求严苛的行业,选对净化铝型材堪比 “定海神针”,而交货慢、品质不稳定更是让无数工程负责人…

2025 权威推荐!净化铝型材品牌 TOP5 排行榜:实力厂家精选,品质之选不容错过

2024年国内工业铝型材产量达1170万吨,同比暴涨23.2%,其中净化专用型材需求增速更是突破19%。但繁荣背后暗藏危机:低价产品用回收铝冒充6063-T5原生铝,铁含量超标导致抗腐性骤降;宣称的"1000小时盐雾测试&quo…

关于HashMap

hashMap的底层数据结构是哈希表,哈希表又由数组加链表构成,在执行put操作时,hashMap会根据key进行哈希函数运算,得到他在数组的位置并插入对应链表,如果哈希值相同并且关键字也相同,那么会直接修改原来的value值…

sar(System Activity Reporter 系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一。

sar(System Activity Reporter 系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一。它可以从多方面对系统的资源使用情况进行监控,包括:文件的读写情况、系统调用的使用情况、磁盘 I/O、CPU 效率、…

车辆主动悬架线性最优控制(LQR)系统

车辆主动悬架系统的线性二次型最优控制(LQR)设计,包括系统建模、控制器设计和性能分析 1. 系统动力学模型 1.1 二自由度1/4车辆模型 classdef ActiveSuspensionLQR < handle% 主动悬架线性最优控制系统% 采用二自由…

2025环保/植物/净醛/健康/无味腻子粉厂家推荐榜:专注多场景墙面基底解决方案供应!

随着房地产精装修、旧房翻新改造及商业空间装修领域的快速发展,腻子粉作为墙面找平、美化的核心基底材料,市场需求持续攀升。但行业乱象凸显:部分厂家用劣质碳酸钙、回收胶粉压缩成本,导致腻子粉易开裂、脱粉,墙面…

2025 泰国立体/高位/仓储/托盘/重型/流利式/贯通式/穿梭车/模具货架厂家推荐排行榜:聚焦多场景存储需求,精选优质供应商!

随着电商物流、制造业仓储、零售门店及家居收纳领域的快速发展,货架作为提升空间利用率、优化存储管理的核心设备,市场需求持续攀升。但行业乱象同样凸显:部分厂家使用劣质钢材压缩成本,导致货架承重不足、易变形,…

2025 工控/核心板/工业/嵌入式主板板卡厂家推荐排行榜:聚焦多领域智能硬件核心供应!

随着工业自动化、物联网、消费电子及人工智能领域的飞速发展,主板板卡作为智能硬件的核心 “大脑”,其市场需求持续攀升。但行业乱象同样凸显:部分厂家采用劣质元器件压缩成本,导致板卡稳定性差、使用寿命短,频繁…

计划任务在不管用户是否登录都要运行时,bat不能正常运行处理办法

经过研究实际测试发现,按照以下步骤即可解决: 1、只要设置好任务以后(选择“不管用户是否登录都要运行”) 2、用管理员运行CMD : schtasks /change /it /tn "任务名称" 3、执行完上述命令后,按照提示输…

2025 高压/高压空气/氦气/氩气压缩机厂家推荐榜:聚焦多场景压缩空气解决方案!

随着工业制造、医疗健康、食品加工及新能源领域的高速发展,压缩机作为核心动力设备,其市场需求持续增长。但行业现存诸多痛点:部分厂家以次充好,采用劣质核心部件缩短成本,导致设备运行稳定性差、能耗高、寿命短;…

HLT-Q0402-COG-25V-820-J高频电容选型、替代与焊接避坑指南

HLT-Q0402-COG-25V-820-J高频电容选型、替代与焊接避坑指南最近在项目中用到 HLT-Q0402-COG-25V-820-J 这颗电容,查了不少资料,也看了一些论坛讨论,简单总结如下,供有需要的朋友参考: 规格参数:820pF 5%、25V、C…

HLT-Q0402-COG-25V-820-J高频电容选型、替代与焊接避坑指南

HLT-Q0402-COG-25V-820-J高频电容选型、替代与焊接避坑指南最近在项目中用到 HLT-Q0402-COG-25V-820-J 这颗电容,查了不少资料,也看了一些论坛讨论,简单总结如下,供有需要的朋友参考: 规格参数:820pF 5%、25V、C…

2025 温室/蔬菜/花卉/单栋/玻璃温室/连栋/连栋膜温室/薄膜/塑料/钢架大棚厂家推荐榜:聚焦多场景种植需求,提供专业设施解决方案!

随着农业现代化进程加速、设施农业普及以及特色种植(如反季节蔬果、花卉培育、种苗繁殖)产业的蓬勃发展,大棚作为调控种植环境、提升作物产量与品质的核心设施,市场需求持续增长。但行业乱象同样凸显:部分厂家采用…

Delta并联机器人正逆解实现

一、运动学建模基础 1. 结构参数定义静平台:半径\(R\),安装三个主动臂(\(A1A2A3\)) 动平台:半径\(r\),连接三个从动臂(\(B1B2B3\)) 驱动参数:主动臂长度\(L\),从动臂长度\(l\) 坐标系:以静平台中心为原点,…

SQL查询,直接生成json结果

场景可直接将查询结果,调用post请求发送json数据 可直接根据json结果,进行序列化处理SELECT JSON_ARRAYAGG(JSON_OBJECT(id, id,code, `code`,primaryWaybillCode, primaryWaybillCode,carrierCode, carrierCode,sto…

2025 MVR/三效/多效/结晶/废水/降膜蒸发器厂家口碑推荐榜:聚焦多行业废水处理与物料浓缩解决方案!

随着工业生产精细化、环保要求严格化及资源回收重视度的提升,蒸发器作为实现废水零排放、物料高效浓缩与资源循环利用的核心设备,市场需求持续增长。但行业痛点显著:部分厂家缺乏核心技术,设备能耗高、运行不稳定,…