Winform跨窗體操作控件(使用委托)
阿新 • • 發佈:2017-06-19
namespace del frame end 步驟 打開 ring names public
Winform跨窗體操作控件是winform開發中很常見的形式,最常見且簡單有效的方式便是使用委托的方式來進行操作,下面我將通過一個小實例來說明如何使用委托跨窗體實現控件操作。
實例介紹:兩個窗體,Form1按鈕打開Form2,然後在Form2的TextBox輸入值在Form1的TextBox中顯示出來。
一、項目結構
Form1窗體設計:
Form2窗體設計:
二、代碼實現
在Form2的代碼中聲明一個委托(寫在Form2類外)->
public delegate void ChangeForm1TextBoxValue(string txt);
然後在Form2類內寫一個委托事件->
public event ChangeForm1TextBoxValue ChangeTextBoxValue;
雙擊Form2的textbox給Form2的textbox添加值變化出發事件,並在此事件中調用委托事件->
private void textBox1_TextChanged(object sender, EventArgs e) { ChangeTextBoxValue(this.textBox1.Text);//執行委托實例 }
Form2的完整代碼如下:
using System; using System.Windows.Forms; namespace Test.FormsApp { public delegate void ChangeForm1TextBoxValue(string txt); public partial class Form2 : Form { public event ChangeForm1TextBoxValue ChangeTextBoxValue; public Form2() { InitializeComponent(); } private void textBox1_TextChanged(object sender, EventArgs e) { ChangeTextBoxValue(this.textBox1.Text);//執行委托實例 } } }
然後我們切換到Form1的代碼
button點擊事件實例化Form2並調用Form2的委托事件->
private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.ChangeTextBoxValue += F2_ChangeTextBoxValue; f2.Show(); }
在下面聲明委托事件的操作方法->
private void F2_ChangeTextBoxValue(string txt) { this.textBox1.Text = txt; }
上述步驟在輸入+=號時可以雙擊兩下Tab鍵,IDE(編譯器)會自動將事件補全~
Form1的完整代碼如下:
using System; using System.Windows.Forms; namespace Test.FormsApp.NETFramework461 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.ChangeTextBoxValue += F2_ChangeTextBoxValue; f2.Show(); } private void F2_ChangeTextBoxValue(string txt) { this.textBox1.Text = txt; } } }
到這裏,我們的實現基本完成,下面進入測試!
三、效果測試
然後在Form2的textbox中輸入值
可以看到值已經實時顯示到Form1的textbox中。
測試結果達到預期效果,項目實現成功!
一起成長,共同學習~
Winform跨窗體操作控件(使用委托)