让代码更简单

C#事件委托的简单使用

重要:本文最后更新于2019-07-13 16:53:07,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

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

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的方法的参数都是一样的字符串类型的。只有三方匹配了,才能正常使用!

效果图:

C#自定义事件委托的简单使用

C#自定义事件委托的简单使用

感觉很棒!可以赞赏支持我哟~

7 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐