標籤:
這兩天看前輩的視頻初識了表單傳值,於是自己跟著敲了兩個Demo,方便以後複習、分享交流。
表單傳值的兩種方法:1.通過屬性構造方法傳值 2.利用委託實現傳值。
樣本1:點擊Form1中的按鈕開啟From2,點擊Form2中的按鈕改變表單Form1的背景顏色。
Form1的代碼:
1 public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 } 7 8 private void button1_Click(object sender, EventArgs e) 9 {10 //通過Form2的建構函式將Form1對象傳遞到Form2中11 Form2 form2 = new Form2(this);12 form2.Show();13 }14 }
Form2的代碼:
1 public partial class Form2 : Form 2 { 3 //首先在Form2中定義Form1類型欄位用來儲存Form1對象 4 Form1 form1=null; 5 Random r = new Random(); 6 public Form2() 7 { 8 InitializeComponent(); 9 }10 public Form2(Form1 form):this()11 {12 //通過構造方法將Form1對象給Form2欄位賦值13 form1 = form;14 }15 private void button1_Click(object sender, EventArgs e)16 {17 //隨機改變Form1的背景顏色18 form1.BackColor = Color.FromArgb(r.Next(256),r.Next(256),r.Next(256));19 }20 }
樣本2:Form1中有一個button、label,From2中有button、textBox。點擊Form1中的按鈕開啟From2並在textBox中輸入字元,
再點擊Form2中的按鈕將其輸入的字元顯示在Form1的label上。
Form1的代碼:
1 public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 } 7 8 private void button1_Click(object sender, EventArgs e) 9 {10 Form2 form2 = new Form2(ShowMsg);11 form2.Show();12 }13 14 //將這個方法通過建構函式傳遞給Form215 public void ShowMsg(string msg)16 {17 label1.Text = msg;18 }19 }
Form2的代碼:
1 //在這裡聲明的委託需要與要傳遞的方法有相同的簽名 2 public delegate void DelTest(string msg); 3 4 public partial class Form2 : Form 5 { 6 //聲明委託欄位用來儲存Form1傳來方法 7 public DelTest _del; 8 public Form2(DelTest del) 9 {10 _del = del;11 }12 13 private void button1_Click(object sender, EventArgs e)14 {15 //執行委託回傳資料16 _del(textBox1.Text);17 }18 }
表單傳值的兩種實現方法樣本