一、从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);
}
}
[ Form1中的代码 ]
//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;
}