另外,以上所说的都不是MDI窗体
就是普通的System.Windows.Forms.Form

解决方案 »

  1.   

    把父窗体的控件属性设置为public试试。
      

  2.   

    把父窗体作为参数传到子窗体,然后父窗体的控件设置为public
      

  3.   

    把form对象定义成全局的就是了.
      

  4.   

    你将父窗体通过构造方法参数或者公共方法传递进子窗体就可以了。pubic class Form2
    {
    public Form2(Form1 form)
    {
    myform = form;
    }
    Form1 myform;public void SetForm(Form1 form)
    {
    myform = form;
    }}
      

  5.   

    引用 JasonHeung(拥有一切也只不过这样笑着哭):
    你将父窗体通过构造方法参数或者公共方法传递进子窗体就可以了需要在子窗体中访问的父窗体中的控件需要修改成public的,因为一般拖到窗体上的控件都是缺省private的
      

  6.   

    建议最好不要直接修改控件的访问修饰符,对于字段来说最好使用私有的,要公布字段的话,通过属性的方式去公布。也就是说添加一个访问父窗体控件的属性就可以了。对于你说的应用来说,只实现属性的get方法即可,这样,可以避免父窗体的控件被修改。
      

  7.   

    wuyueyoumu(五月游牧)说的有道理!仅仅改为public不太好。我现在用JasonHeung(拥有一切也只不过这样笑着哭) 的方法,但没有传窗体,只是传Form1中控件的值。效果还不错。
      

  8.   

    1、将你要访问的父窗体中的对象设为Public
    2、将父窗体负值到子窗体的Owner里
    3、在子窗体中使用Owner生成父窗体对象
    4、用生成的对象就能调用父窗体中的Public对象了例:
    父窗体:
    private void abc()
    {
        Form2 frm = new Form2();
        frm.Owner = this;
        frm.Show();
    }子窗体:
    private void abc()
    {
        Form1 frm = ( Form2 )this.Owner;
        //假设父窗体中有Public textBox1
        frm.textBox1.Text = "Hello";
    }
      

  9.   

    例:在Form2的构造中这样写
    public Form2(Form frm)
    {
        //要先声明basefrm
        basefrm = frm;
    }
    在Base窗体中
    Form2 frm2 = new Form2(this);
    最后检查主窗中的控件是不是public的
      

  10.   

    在子窗体中保存父窗体的引用,
    http://blog.csdn.net/zhzuo/archive/2004/04/05/22027.aspx
    http://blog.csdn.net/zhzuo/archive/2004/04/05/22028.aspx
    http://blog.csdn.net/zhzuo/archive/2004/04/05/22029.aspx