本文轉自:https://mp.csdn.net/postedit/100058721
1、功能展示
有時需要將子界面的內容傳遞到父界面,方法有好幾種。經常用的是通過委托實現。具體的效果如下:
【說明】點擊父界面上“打開子界面”button,則會彈出子界面。父界面與子界面如上圖所示。
【說明】在子界面的textBox框內輸入待返回至父界面的內容,點擊“將內容返回”button,則父界面的textBox將會展示返回的內容。具體如上圖所示
2、代碼分析
里面應用了委托(delegate)和事件(event)。委托就是前端開發中最常用的“回調方法”(callback),event是一種注冊機制,將動作與委托關聯。
為了實現以上功能,首先先編寫子窗體的定義。代碼如下:
public partial class Form2 : Form { //第二步:聲明一個委托類型的事件 public event setTextValue setFormTextValue; public Form2() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //第三步:准備相關數據。 setFormTextValue(this.textBox1.Text); } } // 第一步:聲明一個委托。(根據自己的需求) //注意:該委托必須聲明在命名空間中,而不應該聲明在類中,否則不能調用(新加) public delegate void setTextValue(string textValue);第一步:先在子窗體中定義一個委托。根據實際需求定義委托
第二步:在子窗體中聲明一個event,將委托與動作關聯
第三步:在具體的事件中實現event
以上三步參見Form2的代碼
父窗體的代碼如下:
在父窗體的具體實現中分為2步:
第四步:在定義子窗體時,聲明子窗體的事件
第五步:實現具體的事件
以上,就是全部的內容
3、功能分析
通過委托的方式,優點:松耦合。