引言机房重构的时候实现窗体传值,百度了很多方法都没有成功实现,于是想到了学习设计模式的时候用过的委托。下面小编就来简单的介绍一下委托,以及如何用委托实现窗体间的传值 什么是委托我一直在思考如何解释委托,才能把委托解释的更加透彻。因为看问题的角度不同,每个人对委托都有不同的见解。个人认为可以从以下2点来理解: (1)从数据结构来讲,委托和类一样是一种用户自定义类型 (2)从设计模式来讲,委托提供了方法的抽象 我们知道,委托是方法的抽象,它存储的就是一系列具有相同签名和返回类型的方法的地址。调用委托的时候,委托包含的所有方法将被执行 委托类型声明委托是类型,与类一样委托类型必须在被用来创建变脸以及类型对象之前声明 (1)以deleagate关键字开头 (2)返回类型+委托类型名+参数列表 委托与方法的区别 //委托 Public delegate void BugTicketEventHandler(); //方法 public void BuyTicket() { 方法体 } 在现实生活中,委托只是一个命令,做事情的是别人,而在程序世界中委托只是存储了各个方法的地址,而它自己也是什么也不做的 使用委托实现窗体传值首先建一个winform窗体,如下图 具体代码如下: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(ShowText); frm2.Show(); } //Form2传送过来的数据 赋值给label void ShowText(string str) { label1.Text = str; } } 然后再建一个窗体,如下图 代码如下: //声明委托 public delegate void DelTest(string str); public partial class Form2 : Form { private DelTest _del;// 存储Form1传送过来的函数 public Form2(DelTest del) { this._del = del; InitializeComponent(); } private void textBox1_TextChanged(object sender, EventArgs e) { this._del(textBox1.Text.Trim()); } } 最后实现的效果图,如下: |
|
来自: goodwangLib > 《C#》