胖在一方

出得厅堂入得厨房的胖子

导航

.Net中,通过子窗体向父窗体传递数据

Posted on 2006-09-12 16:26  胖在一方  阅读(744)  评论(1)    收藏  举报

 



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