背景:表單Form1和Form2 Form2由Form1開啟(1、模式表單 2、非模式)要求:Form2的TextBox值傳回Form1的TextBox中方法: 情況一:(模式表單)Form1 .ShowDialog()開啟Form2view plaincopy to clipboardprint?Form1: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(this,textBox1.Text);//帶參數構造Form2(此方法該處帶倆參數構造多餘) if (frm.ShowDialog() == DialogResult.OK) { this.textBox1.Text += frm.ReturnText;//通過Form2的屬性獲得回傳值 } frm = null; } Form2: public partial class Form2 : Form { private Form1 pfrm; private string frm1txt; public Form2(Form1 parentfrm,string frm1text) { InitializeComponent(); pfrm = parentfrm; frm1txt = frm1text; } public string ReturnText//回傳值的屬性 { get { return this.frm1txt; } } private void button2_Click(object sender, EventArgs e)//給屬性賦值並關閉模式表單Form2 { frm1txt = this.textBox2.Text; this.DialogResult = DialogResult.OK;//*必加 模式表單開啟後 只有DialogResult初始化後才可繼續操作 否則值無法傳回 this.Close();//模式表單關閉.close()相當於將表單隱藏 徹底關閉需要用.Dispose() } private void button3_Click(object sender, EventArgs e)//關閉 { this.DialogResult = DialogResult.Cancel;//同* this.Close(); } Form1: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(this,textBox1.Text);//帶參數構造Form2(此方法該處帶倆參數構造多餘) if (frm.ShowDialog() == DialogResult.OK) { this.textBox1.Text += frm.ReturnText;//通過Form2的屬性獲得回傳值 } frm = null; } Form2: public partial class Form2 : Form { private Form1 pfrm; private string frm1txt; public Form2(Form1 parentfrm,string frm1text) { InitializeComponent(); pfrm = parentfrm; frm1txt = frm1text; } public string ReturnText//回傳值的屬性 { get { return this.frm1txt; } } private void button2_Click(object sender, EventArgs e)//給屬性賦值並關閉模式表單Form2 { frm1txt = this.textBox2.Text; this.DialogResult = DialogResult.OK;//*必加 模式表單開啟後 只有DialogResult初始化後才可繼續操作 否則值無法傳回 this.Close();//模式表單關閉.close()相當於將表單隱藏 徹底關閉需要用.Dispose() } private void button3_Click(object sender, EventArgs e)//關閉 { this.DialogResult = DialogResult.Cancel;//同* this.Close(); } 情況二:(非模式表單)Form1 .Show()開啟Form2view plaincopy to clipboardprint? Form1: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(this,textBox1.Text); //帶參數構造Form2(此處參數1必須,參數2多餘 參數2作用為將Form1的值傳遞到Form2) frm.Show(); } public void ChangeText(string str)//獲得Form2回傳過來的值 { this.textBox1.Text += str; } } Form2: public partial class Form2 : Form { private Form1 pfrm; private string frm1txt; public Form2(Form1 parentfrm,string frm1text) { InitializeComponent(); pfrm = parentfrm; frm1txt = frm1text; } } private void button1_Click(object sender, EventArgs e) { pfrm.ChangeText(this.textBox2.Text);//調用Form1的方法 } private void button4_Click(object sender, EventArgs e) { pfrm.textBox1.Text += "sdfsdfsd";//或直接存取Form1的控制項 }