方法1:使用传参的方法
class Form1:Form
{
     //这是父窗口A
     private Form2[] formB = new Form2[20];//假如你要同时显示20个Form2
     public int x;  //假如X就是你要传给Form2显示的
     //在实际实例化B的时候
     private void ShowFormB()
     { 
          formB[1] = new Form2(this) //把要传的东西传给B
          formB[1].Show();
     }
}class Form2:Form
{
     //这是子窗口B
     private Form1 myForm1;
     public Form2(Form1 form1)
     {  
          myForm1 = form1;
          MessageBox.Show(form1.x.ToString());//这样就把值传过来了
     }
}

解决方案 »

  1.   

    楼上的可能没有明白我的想法,这样出来的结果是Form2在Form1的进程中创建。而我需要的是Form2与Form1分开在不同的进程中。另外,出于本地运行目的的情况下使用Remoting是否有点小题大作?
      

  2.   

    使用sendmessage应该也可以,不过首先是需要知道form.handle,不过窗口是自己创建的,使用findwindow应该没问题吧。
      

  3.   

    你这个需求用MVC模式来会很合适的
    至于你说的‘关键是A和B之间的进程通讯吧……’这只是个进程通讯而已
    采用Win32 API或Remoting都可以的
      

  4.   

    利用MVC模式,或者观察者模式,都可以很好的解决这个问题。
    IDE中的属性窗口不就是这个样子的么