第一種方法:將Form1整個窗體做爲值傳給Form2this
form1 button1彈出 from2,spa
from2 numericUpDown1的值改變,使form1 textBox1的值改變。code
Form1代碼:orm
//第一種方法:將整個窗體做爲值傳給Form2 private void button1_Click(object sender, EventArgs e) { Form frm2 = new Form2(this); frm2.ShowDialog(); } //改變textBox1的值 public void ChangeText(string s) { this.textBox1.Text = s; }
Form2代碼:blog
//將傳過來的Form1所有賦值給f1,這樣就能夠在這邊調用Form1了 private Form1 f1; public Form2(Form1 frm1) { InitializeComponent(); f1 = frm1; } private void numericUpDown1_ValueChanged(object sender, EventArgs e) { //調用Form1中的changetext事件 f1.ChangeText(numericUpDown1.Value.ToString()); }
第二種方法:委託與事件事件
form1 button1彈出 from2,get
from2 numericUpDown1的值改變,使form1 textBox1的值改變,string
from2 numericUpDown1的值清空,使form1 textBox1的值清空。it
Form1代碼:event
//2.註冊事件 private void button1_Click(object sender, EventArgs e) { Form3 frm3 = new Form3(); //寫到+=時,按兩次Tab鍵會自動生成frm3_changed,frm3_empty兩個事件 frm3.UpdateTextValueEvent += new Form3.ChangeTextValueDelegate(frm3_changed);//改變值的事件 frm3.EmptyTextValueEvent += new Form3.ChangeTextValueDelegate(frm3_empty);//清空值的事件 frm3.ShowDialog(); } //改變值的事件 private void frm3_changed(string s) { this.textBox1.Text = s; } //清空值的事件 private void frm3_empty(string s) { this.textBox1.Text = ""; }
Form3代碼:
//1.定義帶參數的委託與兩個事件 public delegate void ChangeTextValueDelegate(string s); public event ChangeTextValueDelegate UpdateTextValueEvent; public event ChangeTextValueDelegate EmptyTextValueEvent; //3.傳值 private void numericUpDown1_ValueChanged(object sender, EventArgs e) { UpdateTextValueEvent(numericUpDown1.Value.ToString()); } private void button1_Click(object sender, EventArgs e) { EmptyTextValueEvent(numericUpDown1.Value.ToString()); }