关于Delegate【代理、委托】是C#中一个非常重要的概念,向前可以推演到C++的指针,向后可以延续到匿名方法、lambda表达式。
现在我就从一个最简单最实用的一个小例子出发分析一下Delegate的使用。
现在有两个窗体Form1和Form2。
两个按钮Button1(Form)和Button2(Form2)。
Form1的代码:
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(textBox1.Text);
frm.SetProperty += new Form2.DelegateText(SetProperty2);
frm.ShowDialog();
}
private void SetProperty2()
{
MessageBox.Show("ok");
}
Form2的代码:
public delegate void DelegateText();
public DelegateText SetProperty;
private void button2_Click(object sender, EventArgs e)
{
SetProperty();
}
分析者两段简短的代码,可以看出一些Delegate的好处,之前我写这个功能的时候是将form1的对象传给form2,点击form2之后再通过from1的对象调用form1的public方法,这样的代码总觉得很别扭,也就是所谓的类型不安全,需要公开所要调用的方法,还需要将form1的对象传递至form2中,显然不是最佳的方案。
现在有了Delegate问题就迎刃而解了,相当于new form2的时候,我让form2代替我去更新属性的操作,这样我的方法不需要暴露出来,而form2也只能调用这一个方法,也就达到了所谓的类型安全的说法,此虽是个小例子,但是却能管中窥豹,看到一些Delegate的好处。
如果不同的观点请各位博友留言讨论。
分享到:
相关推荐
本文实例讲述了C#使用委托(delegate)实现在两个form之间传递数据的方法。分享给大家供大家参考。具体分析如下: 关于Delegate【代理、委托】是C#中一个非常重要的概念,向前可以推演到C++的指针,向后可以延续到匿名...
C# 使用委托方式Usercontrol与主窗体进行消息传递
适合初学者了解C#的delegate,是一个非常简单的例子。
iOS 的delegate代码是http://blog.csdn.net/ilikeprograming/article/details/26206075的附件。这份代码有助于新手理解delegate。
C# Delegate讲解C# Delegate讲解C# Delegate讲解C# Delegate讲解
C# delegate thread范例 若不懂在代码中,线程如何调用的可以看看
事件触发最简单例子event delegate
最近收集的VB.Net-C#多线程Thread-代理委托delegate编程。文章列表: c#.net多线程同步.txt C#WebBrowser页面与WinForm交互技巧一.txt C#多线程编程-多细全.txt C#多线程编程简单实例.txt C#多线程窗体控件安全访问....
委托回调
C# 窗体传值(子窗体向主窗体传值) //声明一个委托 public delegate void DisplayUpdateDelegate(string str); //声明事件 public event DisplayUpdateDelegate ShowUpdate;
委托 和 事件在 .Net ...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。
在IOS中使用委托协议在两个View之间传值,类似Android中Activity的onActivirtyResult方法
C#例子代码 A0031_delegateC#例子代码 A0031_delegateC#例子代码 A0031_delegateC#例子代码 A0031_delegateC#例子代码 A0031_delegateC#例子代码 A0031_delegateC#例子代码 A0031_delegateC#例子代码 A0031_...
Delegate简单介绍了 委托的使用, delegateMul比上一个例子复杂,特别是最后的一条输出语句,那是关键,能理解了,那你的委托就八成没问题了
c#中关于委托delegate的经典的实例,可以使我们清楚的了解delegate的使用方法及含义。
第一:在主线程中开启两个子线程,子线程用事件方式来进行通信。对于主线程的控件操作采用的是delegate委托的方式,避免主线程假死。 第二:采用的是SendMessage和FindWindow的方式来进行和主线程通信。 第三:改写了...
delegate与事件的实例,很简单的例子,帮助初学者理解,其中有两个delegate,一个有参数,一个无参数
本ppt结合场景和实例对C#委托(delegate)的基础进行了讲解:包括了委托的定义,基本语法,同步异步调用,匿名委托的使用,泛型委托,lamda表达式,剖析了委托协变、委托逆变。对委托在.net 3.5框架中的身影进行了分析...
winform的一个简单易用异步加载等待效果,调用方式: this.AsyncWaitDo(delegate{ //异步等待操作}, delegate{//回调操作}); this是要进行异步等待的窗体