

net中通过子窗体向父窗体传递数据
方法描述如下:
在子窗体定义一个委托(可以根据需要,更改委过的函数签名,以便传递不同类型的数据),事件。在主窗体中定义一个子窗体的实例,并处理子窗体中定义的事件的执行代码(传递数据)。当子窗体触发改事件的时候,在主窗体处理事件的(得到从子窗体传递过来的数据)
文笔不好,就是这个意思,看具体代码理解吧~
C#
------
子窗体
//定义委托PostStr 可以根据需要,更改函数签名,以实现传递不同的数据类型
public delegate void PostStr(string str) ;
//定义事件SendMessage
public event PostStr SendMessage; 
private void button1_Click(object sender, System.EventArgs e)
{
//触发该事件SendMessage,传递数据
if (SendMessage != null)
{
SendMessage(textBox1.Text) ;
}
}
父窗体
//定义子窗体
childForm =new frmChild() ;
private void frmMain_Load(object sender, System.EventArgs e)
{
//实例化子窗体
childForm =new frmChild() ;
//子窗体SendMessage的处理方法 是GetStr方法,该事件是在子窗体childForm触发的。
childForm.SendMessage += new frmChild.PostStr( GetStr);
}
//子窗体childForm的SendMessage的处理方法,显示子窗体的传递过来的内容
private void GetStr(string str)
{
this.textBox1.Text =str ;
}vb.net版本
子窗体
'利用该事件 将 LoginUser传递给 frmMain
Public Event EventSendCommUser(ByVal userInfo As CommUser)
在适当的业务逻辑中引发该事件
RaiseEvent EventSendCommUser(Me.loginUser)
主窗体
Public Sub GetCommUser()Sub GetCommUser(ByVal loginUser As CommUser) Handles login.EventSendCommUser
fCurrentUser = loginUser
End Sub
'利用该事件 将 LoginUser传递给 frmMain
Public Event EventSendCommUser(ByVal userInfo As CommUser)
在适当的业务逻辑中引发该事件
RaiseEvent EventSendCommUser(Me.loginUser)
主窗体
Public Sub GetCommUser()Sub GetCommUser(ByVal loginUser As CommUser) Handles login.EventSendCommUser
fCurrentUser = loginUser
End Sub
浙公网安备 33010602011771号