把要被控制的控件声明为public

解决方案 »

  1.   

    //Form2 class
    public Form1 myForm1;//Using this.myForm1//Form1 class
    //Set controls with public
    //Open Form2 window
    Form2 myForm2=new Form2();
    myForm2.myForm1=this;
    myForm2.Show();
      

  2.   

    如果是Form2中实例化的Form1, 那可以在Form1中定义public的方法供Form2来调用, 以控制它的控件
    但如果是先有的Form1, 再有的Form2, 那你要反过来调用就难办了
      

  3.   

    //Form1 class
    //Set controls to be public//Form3 class//Declare API
    [DllImport("USER32.dll")] 
    extern public static IntPtr FindWindowEx(
    IntPtr hwndParent, 
    IntPtr hwndChildAfter, 
    StringBuilder strClassName,
    StringBuilder strWindowsName); //To control Form1
    StringBuilder strTemp=new StringBuilder(yourForm1Title,256);
    try
    {
    IntPtr pForm=FindWindowEx(IntPtr.Zero,IntPtr.Zero,
    null,
    strTemp);
    if(pForm!=IntPtr.Zero)
    {
    //To control Form1 
    //Using "Form1.FromHandle(pForm)"
    }
    else
    MessageBox.Show("Not find");
    }
    catch(Exception err)
    {
    MessageBox.Show(err.Message);
    };
      

  4.   

    就是form1先有,而且已经启动了,我想后启动的form2来控制form1中的控件,呵呵
      

  5.   

    Knight94(愚翁) 的方法已經可以實現了,但不知為何不能Close被控制的窗體,只能Dispose??
      

  6.   

    要用api???这个问题难道就这么难?vb6做这个的话,根本就不用考虑啊???等待好的方法,不会是什么钩子吧,楼上说得对,就是如何得到窗体实例运行的句柄?????等待。