子窗体要传消息给母窗体-->在母窗体订阅子窗体的event
母窗体要传消息给子窗体-->在母窗体呼叫子窗体的公开方法

解决方案 »

  1.   

    方法1:使用公共数据,比如,把第2、1个窗体的实例公布。
      public static Form2 gForm2 = new Form2();
      public static Form1 gForm1 = new Form1();
      这样,可以自由访问他们。
    不推荐。方法2:传递控制权。比如,让Form3控制Form2,From2 控制Form1
      class Form3{
        public Form2 _Form2;
      }  class Form2{
        public Form1 _Form1;
      }你只需要把对象传递进取就可以了。比如:
      class Form1{
        Form2 _Form2;
        Form3 _Form3;    public Form1(){
          _Form2 = new Form2();
          _Form2._Form1 = this;      _Form3 = new Form3();
          _Form3._Form2 = this._Form2;
       }  }
    仍然不推荐。
      

  2.   

    要操作子窗体,可以给子窗体设一个标识(key之类的东西)
    简单的方法可以给子窗体实现同一个接口。
    public interface IMdiForm
    {
        string key {get;}
    }
    public Form form1 : Form , IMdiForm
    {
        public string key
        {
           get{return "key1";}
        }
    }
    父窗体里用 
    foreach ( IMdiForm imdi in this.MdiChildren)
    {
        ((Form)imdi).close();
    }子窗口调你窗口很简单this.mdiparent 就行了。
    只要能操作各个窗口,交换数据就很轻松了。
      

  3.   

    更正一下,倒数第二句:
    子窗口调父窗口很简单this.mdiparent 就行了。
      

  4.   

    form1上的txtBox设成public
    然后 form1.txtBox1.Text =""