分享

【C#】使用委托实现窗体传值

 goodwangLib 2018-02-09

引言

    机房重构的时候实现窗体传值,百度了很多方法都没有成功实现,于是想到了学习设计模式的时候用过的委托。下面小编就来简单的介绍一下委托,以及如何用委托实现窗体间的传值

什么是委托

    我一直在思考如何解释委托,才能把委托解释的更加透彻。因为看问题的角度不同,每个人对委托都有不同的见解。个人认为可以从以下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()); } }

    最后实现的效果图,如下:




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多