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就是一个委托