C# 委托(回调)

 1 实现功能是:在小画面修改某值后,立即反映到大画面(小画面未关闭的时候) 
 2 
 3 大画面:
 4     // 委托声明
 5     public delegate void ProcessDelegate_frm_upd_bikou(string strBiko);
 6     
 7     // 和委托具有相同签名的方法
 8     public void callBack_FrmBikoHenko(string strBiko)
 9     {
10         if (ss.RowSel > 0)
11         {
12             this.ss.Rows[ss.RowSel]["備考"] = strBiko;
13         }
14     }  
15 
16     // 实例化委托
17     ProcessDelegate_frm_upd_bikou pdFrm = new ProcessDelegate_frm_upd_bikou(callBack_FrmBikoHenko);
18     frm_upd_bikou f = new frm_upd_bikou(pdFrm);    
19 
20 子画面:
21     // 委托变量
22     private ProcessDelegate_frm_upd_bikou pdCallBack;
23 
24     // 通过构造函数,接收传过来的委托
25     public frm_upd_bikou(ProcessDelegate_frm_upd_bikou pdCallBack)
26     {
27         InitializeComponent();
28         this.pdCallBack = pdCallBack;
29     }
30     
31     // 需要反映修改的值
32     if (pdCallBack != null)
33     {
34         pdCallBack(this.txtBiko.Text.Trim());
       或
       pdCallBack.Invoke(this.txtBiko.Text.Trim()); 
35 }

 总结:
○ 委托就是一个类,也可以实例化,通过委托的构造函数来把方法赋值给委托实例
○ 触发委托有2种方式: 委托实例.Invoke(参数列表),委托实例(参数列表)
○ 事件可以看作是一个委托类型的变量
○ 通过+=为事件注册多个委托实例或多个方法
○ 通过-=为事件注销多个委托实例或多个方法
○ EventHandler就是一个委托

posted @ 2019-07-04 18:56  _jwj  阅读(721)  评论(0)    收藏  举报