標籤:style blog http ar color os sp for on
一、利用屬性表單傳值。
其實,利用屬性傳值,原理就是,把表單Form1(父)和表單Form2(子)當作兩個類。在表單Form1中new出Form2的新執行個體之後,通過給Form2表單定義一個屬性來提供一個供Form1調用的介面,說明白了就是,Form2裡邊有一個“東東(屬性)”,是被設定為共有的,在其他類(父類)中新建立了Form2類的新執行個體後,可以通過Form2的新執行個體的這個"東東(屬性)"(注意當前是在其他類表單(父類),不是在Form2),來傳遞Form2的某個控制項的值。下面結合代碼可能會好理解一點:
首先,在Form1裡添加一個button和一個label,在Form2裡添加一個TextBox和一個button。代碼如下:
1 ///////////////////////////////////////////////////////////////////////////// 2 //Form1: Button事件。 3 Form2 frm2 = new Form2(); 4 frm2.ShowDialog(); //此處注意與frm2.Show()的區別。 5 if(frm2.DialogReasult == DialogReasult.OK)//判斷子表單是否確定關閉。 6 { 7 label1.Text = frm2.send;//調用Form2新執行個體的屬性。 8 } 9 10 //Form2 定義一個屬性,用於傳值11 public string send12 {13 get{ return textBox1.Text};14 }15 //Form2 Button事件。16 this.DialogReasult == DialogReasult.OK 17 /////////////////////////////////////////////////////////////////////////////
View Code
至此,利用屬性進行表單傳值的方法就結束了。如果想要進一步瞭解什麼是屬性的話,可以參考我的另一篇拙文:
|部落格園:http://www.cnblogs.com/gu-zhan/p/4122045.html 老鹹出品|
二、利用委託表單傳值。
說實話,其實委託,就是把一個函數作為另一個函數的參數進行傳遞。
利用委託進行表單傳值,下面看代碼介紹:
1 /////////////////////////////////////////////////////////// 2 //Form1:Button事件 3 Form2 frm2 = new Form2(send); 4 //new Form2(),這個Form2其實可以看作一個建構函式,我們這裡僅僅是把send()這個函數通過建構函式初始化了執行個體frm2. 5 frm2.Show();//可區別上面那個例子,與ShowDialog()的區別 6 7 //自訂一個函數 8 public void send(string str) 9 {10 label1.Text = str; 11 }12 13 //Form2:14 //先聲明一個委託,可放在類之外。15 public delegate void Mydel(string str);16 //聲明一個委託的新執行個體。17 public Mydel _del;18 //重寫一下建構函式19 public Form2(Mydel del)20 {21 _del = del;22 InitializeComponent();23 }24 25 //Button事件:26 _del(textBox1.Text);
View Code
這裡我們講一下思路,其實委託傳值,就是在Form1中寫一個函數,通過建立Form2的新執行個體的時候,把這個函數通過Form2的建構函式初始化了一遍。
而在Form2中,定義了一個委託執行個體來接收Form1中,new Form2()的時候,傳遞進來的那個函數。最後可以理解為,委託執行個體"_del"就是等於Form1中的"send()"函數,所以可以看到Button事件裡是這樣的,_del(textBox1.Text);
希望看到這篇文章的人可以把代碼敲一遍,你可以先看看最終是否運行成功,得到你所想要的結果,但是最後一定要敲敲敲敲敲...嘻嘻(*^__^*) 。
轉載請註明 部落格園 :http://www.cnblogs.com/gu-zhan/ 老鹹出品
C# 兩種表單傳值。