1、修改子窗体的构造函数:
简单地说就是通过修改子窗体Form的构造函数,如下所示:
public Frm_Child(string Para1, ArrayList List1, TextBox textBox1, Form. Frm_Main)
{
InitializeComponent();
}
上面的例子中,为子窗体Frm_Child添加了4个参数,分别是:字符串Para1,字符数组List1,文本控件textBox1和父窗体Frm_Main,下面简单区分一下它们各自的特点:
<1> 字符串:单向的值传递,在子窗体中不能通过修改此参数的值来间接改变父窗体中的数据。
<2> 字符数组:引用型传递,可以通过将父子窗体中不同的成员变量指向相同的数组,即可实现变更一方,同时更新对方的数据。
<3> 控件:引用型传递,可以通过修改该控件的数据来直接达到控制父窗体中该控件数据的目的。
<4> 窗体: 这个最直接,直接将父窗体传递到子窗体中,我们可以方便地在子窗体中修改父窗体中所有授权为public 的数据。
2、给窗体添加属性或方法:
获取或设置拥有此窗体的窗体。若要使某窗体归另一个窗体所有,请为其 Owner 属性分配一个对将成为所有者的 窗体的引用。当一个窗体归另一窗体所有时,它便随着所有者窗体最小化和关闭。例如,如果 Frm_Child 归窗体 Frm_Main所有,则关闭或最小化 Frm_Main 时,也会关闭或最小化 Frm_Child。并且附属窗体从不显示在其所有者窗体后面。可以将附属窗体用于查找和替换窗口之类的窗口,当选定所有者窗体时,这些窗口不应消失。若要确定某父窗体拥有的窗体,请使用OwnedForms属性。
我们可以通过下面的方式来确定这种从属的窗体关系:
Frm_Child form. = new Frm_Child();
form.Owner = this;
form.ShowDialog();
或者
Frm_Child form. = new Frm_Child();
form.ShowDialog(this);
定了从属关系以后,我们就可以通过在Form的load事件中或者通过定义public的属性或者方法来彼此进行数据修改操作,简单操作如下:
Frm_Main pareForm. = (Frm_Main)this.Owner;
3、通过委托的方法:
相对以上两种方法来说,这种方法可能较复杂一些,但基本思路是一样的,需要修改的地方如下:
<1> 在Frm_Child.cs中添加委托函数定义:public delegate void SendFun(string str);
<2> 在Frm_Child.cs中添加委托示例:public event SendFun SendToParent;
<3> 在Frm_Child.cs中添加一个按钮,并添加其事件如下:
private void button1_Click(object sender, EventArgs e)
{
if (Send != null)
{
Send(this.textBox1.Text);
}
}
<4> 在Frm_Main.cs中添加方法RecvInfo()方法如下:
private void RecvInfo (string str)
{
textBox1.Text = str;
}
<5> 在Frm_Main.Designer.cs中的InitializeComponent()方法中添加委托实例定义:
this.myForm.Send += new Example3_Frm_Child. SendFun (RecvInfo);
通过上面五步操作,即可达到Form间的通信的目的。
分享到:
相关推荐
C#实现Winform窗口间数据交互的三种方法介绍C#实现Winform窗口间数据交互的三种方法介绍
之前下载了winform实现Echart统计图(基于webBrowser)有了echart在winform的应用。但发现他实际上是静态页面的,统计图未有数据交互功能。本例主要通过C#winform给echart赋值,实现数据动态交互。
本文将为大家介绍的是WinForm窗体之间的数据交互等问题,包括自定义一个构造函数等等问题。
C#WebBrowser页面与Winform交互技巧
C# Winform和网页表单交互(提交和获取)。 高手参考用,新手学习用,Vs2008写的 C# 网页 提交 获取 表单
vs2015 能实现html和winform交互功能,实例简单易懂,适合初学者学习,没有积分的,欢迎加入qq群(c#技术交流群),找群主索要源代码
winform flash交互
c#WINFORM与WEB的直接交互非webservice方法
Unity3D与c# Winform交互,包含Unity3D Web与Winform交互跟 Winform与Unity3D exe之间的交互
本小程序主要展示WinForm用户控件的使用及相互之间的通信,这里主要是通过事件进行实现的,第一个用户控件:(UCForm1.cs)主要包含一个文本框,第二个用户控件:(UCForm2.cs)包含了一个DataGridView和一个文本框,...
主要介绍了C#在WinForm中使用WebKit传递js对象实现与网页交互的方法,涉及针对WebBroswer控件及WebKit控件的相关使用技巧,需要的朋友可以参考下
主要介绍了C#实现winform用子窗体刷新父窗体及子窗体改变父窗体控件值的方法,涉及C#窗体交互的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
C#两种等待窗体的实现 做C#开发过程中,数据交互难免要等待,为了避免假死状态,特找到这两种等待窗体的实现
flex与C# winform交互,实现了flex与winform窗体互相传递数据功能
不仅winform方法能调用js方法,同时js方法能调用winform中的C#方法
附带例子包含fla文件,dotnet工程。内容包括flash传数据给dotnent,dotnet给flash传数据,以及双方的接收及进一步处理,希望能对大家有帮助。是SetVariable及FSCommand方式实现的。
C# Winform中使用WebBroser与Html进行交互
采用的是C#的Winform开发,提供了两种线程交互的方式。 第一:在主线程中开启两个子线程,子线程用事件方式来进行通信。对于主线程的控件操作采用的是delegate委托的方式,避免主线程假死。 第二:采用的是...
功能介绍: 界面好看,易开发,易扩展,性能好 界面好看:采用DX 控件开发 易开发:采用插件形式开发,只要另建项目,然后在数据库中加Form的名称就可以 易扩展:可以无限扩展,权限智能配置 ...
实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件)