委托事件实现更新窗体
2014-03-18 21:45
225 查看
委托 和 事件在 .Net Framework中的应用非常广泛。 委托( Delegate ):是一种定义方法签名(只有方法的名字,没有方法体),可以与具有兼容的签名的任何方法关联。所谓兼容的方法,是指 这个方法和委托的方法签名具有相同的返回类型和参数。它和C或C++中的函数指针十分类似,或者说委托是高级的函数指针。它具有两大特点:面向对象,类型安全和可靠的。
下面通过委托实现数据同步更新
在需要操作的窗体中写入以下关键代码:
在需要数据实时更新的窗体中写入以下关键代码
事件:就是当对象发生某些事情时,向该对象的客户提供通知的一种方法。.NET的事件模型建立在委托机制之上,它实现了对委托的封装。因此它是一种特殊类型的委托,更确切的说是一个多播委托(MultiDelegate)。意思是指可以将多个事件处理函数委托交由一个事件进行托管,即当事件引发时,会调用其中的每一个委托函数。较好地理解委托和事件在开发中会如虎添翼,下面通过自定义事件实现窗体间数据的同步刷新
现在大家发现委托和事件都能很好的实现数据的同步更新。但是在实际操作中推荐大家使用事件。为什么呢?大家发现普通的委托和多播委托的委托对象可以在外部赋值,而事件不能。与普通的委托相比,事件可以避免委托对象被外部随意修改。因此安全性更好。虽然多播委托可以实现事件。但是推荐使用事件的方式。
下面通过委托实现数据同步更新
在需要操作的窗体中写入以下关键代码:
//定义委托 public delegate void DelegateTest(string ms); //定义委托对象 public DelegateTest newDelegate; private void button1_Click(object sender, EventArgs e) { //使用委托调用委托方法 newDelegate(this.textBox1.Text); }
在需要数据实时更新的窗体中写入以下关键代码
//创建需要委托的方法 public void Update(string s) { this.textBox1.Text = s; } private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); //将委托方法传递给委托对象 f2.newDelegate = Update; f2.Show(); }
事件:就是当对象发生某些事情时,向该对象的客户提供通知的一种方法。.NET的事件模型建立在委托机制之上,它实现了对委托的封装。因此它是一种特殊类型的委托,更确切的说是一个多播委托(MultiDelegate)。意思是指可以将多个事件处理函数委托交由一个事件进行托管,即当事件引发时,会调用其中的每一个委托函数。较好地理解委托和事件在开发中会如虎添翼,下面通过自定义事件实现窗体间数据的同步刷新
//定义委托 public delegate void DelegateTest(string ms); //定义委托事件 public DelegateTest newEvent; private void button1_Click(object sender, EventArgs e) { //使用委托调用委托方法 newEvent(this.textBox1.Text); }
//创建需要委托的方法 public void Update(string s) { this.textBox1.Text = s; } private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); //将委托方法传递给委托对象 注意事件赋值方式 f2.newEvent += Update; f2.Show(); }
现在大家发现委托和事件都能很好的实现数据的同步更新。但是在实际操作中推荐大家使用事件。为什么呢?大家发现普通的委托和多播委托的委托对象可以在外部赋值,而事件不能。与普通的委托相比,事件可以避免委托对象被外部随意修改。因此安全性更好。虽然多播委托可以实现事件。但是推荐使用事件的方式。
相关文章推荐
- 委托、事件--实现窗体传值!
- 事件与委托更新父窗体数据,简单比较
- 使用委托实现窗体之间的传值--事件订阅实现传值
- 委托和事件实现父子窗体刷新
- 如何用委托与事件实现winfrom窗体之间值传递
- 【原创源码】(01):利用事件-委托,实现主-子窗体动态显示,不同菜单栏,不同工具栏。(类似SQL Server 2000 企业管理器)
- 利用事件-委托,实现主-子窗体动态显示,不同菜单栏,不同工具栏。(类似SQL Server 2000 企业管理器)
- c# 用委托和事件实现不同窗体间的通讯(二)
- c# 用委托和事件实现不同窗体间的通讯
- 转:c#委托事件实现窗体传值通信
- c# 用委托和事件实现不同窗体间的通讯(一)
- C#的委托事件在winform窗体中实现传值备忘
- C#使用委托创建事件实现两个窗体间通信
- 利用委托事件实现Winform窗体之间的同步刷新
- 转:c#委托事件实现窗体传值
- c# 用委托和事件实现不同窗体间的通讯(一)
- C#中使用委托创建事件实现两个窗体间通信
- C#的委托事件在winform窗体中实现传值备忘
- 窗体之间传值(委托,事件,Owner,封装属性)
- 事件委托的实现