【C#】窗口之间通信


在进行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中都很是适用。

你可能感兴趣的:(C#)