转:c#委托事件实现窗体传值通信
C#实现Winform窗口间数据交互的三种方法介绍
- 摘要:本文分别介绍C#实现Winform窗口间数据交互的三种方法:修改子窗体的构造函数、给窗体添加属性或方法、通过委托的方法,并提供简单的示例代码供参考。
简单地说就是通过修改子窗体Form的构造函数,如下所示:
{
InitializeComponent();
}
<1> 字符串:单向的值传递,在子窗体中不能通过修改此参数的值来间接改变父窗体中的数据。
<2> 字符数组:引用型传递,可以通过将父子窗体中不同的成员变量指向相同的数组,即可实现变更一方,同时更新对方的数据。
<3> 控件:引用型传递,可以通过修改该控件的数据来直接达到控制父窗体中该控件数据的目的。
<4> 窗体: 这个最直接,直接将父窗体传递到子窗体中,我们可以方便地在子窗体中修改父窗体中所有授权为public 的数据。
2、给窗体添加属性或方法:
获取或设置拥有此窗体的窗体。若要使某窗体归另一个窗体所有,请为其 Owner 属性分配一个对将成为所有者的 窗体的引用。当一个窗体归另一窗体所有时,它便随着所有者窗体最小化和关闭。例如,如果 Frm_Child 归窗体 Frm_Main所有,则关闭或最小化 Frm_Main 时,也会关闭或最小化 Frm_Child。并且附属窗体从不显示在其所有者窗体后面。可以将附属窗体用于查找和替换窗口之类的窗口,当选定所有者窗体时,这些窗口不应消失。若要确定某父窗体拥有的窗体,请使用OwnedForms属性。
我们可以通过下面的方式来确定这种从属的窗体关系:
form.Owner = this;
form.ShowDialog();
form.ShowDialog(this);
this.listData1 = pareForm.ListData2;
3、通过委托的方法:
相对以上两种方法来说,这种方法可能较复杂一些,但基本思路是一样的,需要修改的地方如下:
<1> 在Frm_Child.cs中添加委托函数定义:public delegate void SendFun(string str);
<2> 在Frm_Child.cs中添加委托示例:public event SendFun SendToParent;
<3> 在Frm_Child.cs中添加一个按钮,并添加其事件如下:
{
if (Send != null)
{
Send(this.textBox1.Text);
}
}
{
textBox1.Text = str;
}
通过上面五步操作,即可达到Form间的通信的目的。
以上介绍的就是C#实现Winform窗口间数据交互的三种方法,希望对你了解C#实现Winform窗口间数据交互有所帮助。