在进行C#开发时,不可避免要对多个窗口之间进行通信,一下列出六种基本的方法。
1、form1中传参数给form2,在form2中增加个构造函数,将参数传输。
如:string name;
form2 frm=new form2(name);
2、form1中传参数给form2,利用form2中public变量。
如:form2.cs 中
public string name;
form1.cs中:
string name=“get”;
form2 frm=new form2();
frm.name=name;
3、继承
将form2继承form1 必然就可以得到form1中的信息。
4、运用delegate委托:
先在命名空间中定义一个delegate委托:public delegate void MyDelegate(string text);
而后在form2中定义一个MyDelegate变量:public MyDelegate my_event;
而在form1中创建form2时候定义my_event 对应的函数:
form2 frm = new form2();
frm.my_event = new MyDelegate(frm2_event);
frm.show();
在form1中定义frm2_event函数:
private void frm2_event(string text)
{
messageBox.show(text);
}//定义form2中的my_event对应函数。
在form2 中使用 该函数 :
比如在鼠标单击时用该函数:在鼠标左键单击事件中写入:my_event(this.textbox1.text);将form2中的string 类型变量传送到form1中。(可用于创建了的窗体间的通信)
5.运用static 全局类;这种方法比较笨,以本人做C++的经验来看,很多公司都是不乐意去使用全局变量,这样在大 工程中,全局类容易弄混,只是必须避免的。但是不得不说,在对于一些小工程的时候,全局类是很基础,也是很 实用的。同时全局类 配上timer定时器是能够实现时时通信,解决了 创建后的通信。
6.运用windows API 就是使用SendMessage,PostMessage等API函数。
这种方法适用于windows操作系统中。同时不管在C#、还是MFC中都很是适用。