C# 兩種表單傳值。

來源:互聯網
上載者:User

標籤: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# 兩種表單傳值。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.