对于桌面应用程序的开发,窗体间的数据传输可谓家常便饭,对于初级的开发者来说,这可能还得花点时间来琢磨一下,下面是一段我使用的方法,采用了委托+事件的方法,仅供参考(高手请绕行):
窗体数据的传输,无非是主窗体向子窗体传,或者是子窗体向主窗体传这两种情形。
对于从主窗体向子窗体传数据,这个就好说了,可以通过修改构造函数的方法来实现,这里我就不再赘述,如果需要,可参考我前面的文章。
下面重点说下,从子窗体如何回传数据给主窗体并刷新窗体的方法:
对于子窗体来说:
1.首先,定义一个针对该任务的委托;
2.然后,定义上述委托类型的事件;
3.触发事件的方法(其中包括检查该事件是否被注册)。
public delegate void TcpStatedelegate(string txt);//定义一个委托
public event mydelegate myevent;//定义一个上述委托的事件
//触发事件的方法
private void button1_Click(object sender, EventArgs e)
{
if (myevent != null)//检查事件是否注册
{
myevent(txt_IP.Text);
}
}
对于主窗体来说:
1.首先,创建方法,实现数据传递后的操作;
2.然后,创建启动子窗体的方法,并在其中对事件进行注册;
private void 通信设置ToolStripMenuItem_Click(object sender, EventArgs e)
{
frmTCPconfig tcpConfig = new frmTCPconfig();
tcpConfig.myevent += new frmTCPconfig.TcpStatedelegate(tcpConfig_myevent);//注册事件
tcpConfig.ShowDialog();
}
public void tcpConfig_myevent(string str)
{
this.lab_TCPstate.Text = str;
}
实现效果如下:
未连接之前
打开子窗体
点击子窗体,主窗体变化,如下