對於桌面應用程序的開發,窗體間的數據傳輸可謂家常便飯,對於初級的開發者來說,這可能還得花點時間來琢磨一下,下面是一段我使用的方法,采用了委托+事件的方法,僅供參考(高手請繞行):
窗體數據的傳輸,無非是主窗體向子窗體傳,或者是子窗體向主窗體傳這兩種情形。
對於從主窗體向子窗體傳數據,這個就好說了,可以通過修改構造函數的方法來實現,這里我就不再贅述,如果需要,可參考我前面的文章。
下面重點說下,從子窗體如何回傳數據給主窗體並刷新窗體的方法:
對於子窗體來說:
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;
}
實現效果如下:
未連接之前
打開子窗體
點擊子窗體,主窗體變化,如下