C#事件委托的简单使用

在面向对象的编程世界里流传着这样一句话:

Don’t call me,I will call you.”

这句话充分体现了事件的回调,今天就来讲一讲自定义事件委托。

前景:

点击父窗口中按钮1显示子窗口2,点击子窗口2中按钮,将子窗口中textbox中的内容显示在父窗口1中的label中。

要求不能修改控件的访问级别,使用事件和委托来实现。

事件委托的声明:

由于本文使用的不是匿名事件,所以需要定义委托来创建事件。下面的代码就声明了一个叫做updateui 的委托,要使用它,要求传过来的参数里满足括号里的类型一致。

public delegate void updateui ( String str );

然后声明委托类型的事件。事件名自己定义,格式为 访问修饰符 event 委托 事件名;
public event updateui upui;

如此我们就声明了一个名叫upui的事件,当这个事件发生的时候,它会调用委托方法来执行。

下面看实例:

Form1代码:

public partial class Form1 : Form
 {
 public Form1 ()
 {
 InitializeComponent ();
 }

private void button1_Click ( object sender, EventArgs e )
 {
 Form2 form2= new Form2 ();
 form2.upui += getstr;//将getstr方法加入到事件列表里
 form2.Show ();
 }
 public void getstr (String str)//自定义修改UI方法
 {
 this.label1.Text = str;
 }
 }

Form2:

public delegate void updateui ( String str );//声明委托
 public partial class Form2 : Form
 {
 public event updateui upui;//声明委托类型的事件

public Form2 ()
 {

InitializeComponent ();
 }

private void button1_Click ( object sender, EventArgs e )
 {
 upui ( textBox1.Text );//触发事件 
 }
 }
从上面可以很清楚的看到,触发事件时传递的参数,我们定义的委托需要的参数以及修改UI的方法的参数都是一样的字符串类型的。只有三方匹配了,才能正常使用!

效果图:

本站发布的文章及附件仅限用于学习和研究目的;不得将上述内容用于商业或非法用途,否则后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。

如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

本文链接:https://www.cmezy.com/blog/csjwt/

文本链接:C#事件委托的简单使用

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:创梦源码 谢谢

评论0

请先

没有账号? 忘记密码?