一、从Form1(主窗体)把数据传递给Form2(新窗体)
举例: 比如要将Form1中的一个TextBox(frm1_txt)中的值传给Form2
方法:通过重载Form2的构造函数
public Form2() { InitializeComponent(); } private string msg; /*重写Form2构造函数来接收Form1传来的数据*/ public Form2(TextBox txt) { InitializeComponent(); msg = txt.Text; }
二、把Form2(新窗体)中的数据传回给Form1(主窗体)
举例:比如要将Form2中一个TextBox(frm2_txt)中的值传回给Form1
方法:使用自定义事件
[ Form2中的代码 ]
//Form2.cs /*声明委托*/ public delegate void ReturnDateEventHandler(object sender, TextBox e); /*声明事件*/ public event ReturnDateEventHandler OnReturnDateEventHandler; /*将Form2的textBox中的数据传回给Form1*/ private void frm2_btn2_Click(object sender, EventArgs e) { //当事件不为空时触发事件 if (OnReturnDateEventHandler != null) { OnReturnDateEventHandler(this, frm2_txt); } }
//From1.cs private string msg; /*用于新建Form2,并把frm1_txt的数据传给新建的Form2实例*/ private void frm1_btn1_Click(object sender, EventArgs e) { //新建Form2实例 Form2 myfrm2 = new Form2(frm1_txt); //订阅事件 myfrm2.OnReturnDateEventHandler += new Form2.ReturnDateEventHandler(Handletheevent); myfrm2.Show(); } /*显示Form2传来的数据*/ private void frm1_btn2_Click(object sender, EventArgs e) { frm1_txt.Text = msg; } /*事件处理程序:结束From2传过来的textBox数据*/ public void Handletheevent(object sender, TextBox e) { msg = e.Text; }