使用事件和委托再两个窗体之间传递数据(原创)

本文详细介绍了如何在C#窗体间通过事件和委托实现数据传递,包括窗体级变量的使用,以及如何在两个窗体间双向传递数据。通过示例演示了操作过程,使得数据在不同窗体间流动变得简单易懂。

一般情况下,在form1中使用如下方法显示form2

void showform2() {     form2 frm2=new form2();//创建form2的新实例     //显示窗体     frm2.show();//或者frm2.ShowDialog() }

以上做法中如果把以下语句声明为窗体级变量的话:

form2 frm2=new form2();//创建form2的新实例

    这样可以在整个窗体中使用frm2这个实例,只要再frm2中声明公共变量或者把控件设为共有就可以放变得操作frm2中的数据了,从而达到由form1到form2的数据传递。

    但是这种方法是单向的,如果想把form2的数据传回form1的话,以上方法就不能实现了。刚刚在论坛上看到了几种窗体间传递数据的方法,其中利用事件和委托的方法没有详细介绍,自己试做了一下,并成功实现了功能,一下是详细的使用方法:    
    1.在窗体form2中做以下工作     public delegate void dlsetform1(string ss);//声明一个委托     public event dlsetform1 evsetform1; //声明一个事件     private void DoSomething()//这个方法是为了把事件触发处理放在一起可以再应用时按需修改     //一个触发事件的方法,当这个方法被执行时,事件evsetform1开始运作了     { dlsetform1 tempdl=evesetform1;//初始化事件,现在事件已经委托给了tempdl tempdl("这是一次测试!");//tempdl执行,从而事件被触发了     }     //可以再form2中的任意事件里触发事件,例如再窗体中一个按钮的单击事件中触发他     private void button1_Click(object sender, EventArgs e)     { DoSomehing();     }     //嘿嘿,窗体2的工作完成了是不是很简单啊。     2.现在开始操作窗体form1,我们改一下刚才那个显示窗体2的方法     void showform2()     {         form2 frm2=new form2();//创建form2的新实例         //此处把frm2的evsetform1事件绑定到一个方法上, frm2.evsetform += frm2_SetForm1;   
       //当evsetform1被触发时,这个方法将被执行注意,这个方法与form2中的委托dlsetform2的一致性         //显示窗体         frm2.show();//或者frm2.ShowDialog()     }

    //form2事件触发时执行的方法,其中的ss是form2传递过来的数据     private void frm2_SetForm1(string ss)     { this.text=ss;//这里把窗体form1的text属性设置为了frm2传递来的数据"这是一个测试!"     } 

    做到这里就大功告成了。是不是挺容易的。希望对于看到这篇文章的人可以有所启发。

转载于:https://www.cnblogs.com/guozhe/archive/2013/01/16/2862399.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化并行计算等改进策略。; 适合人群:具备一定Python编程基础优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值