有3个打开的窗体,主窗体 mdiMain    子窗体(显示字段变化窗体)FrmShow 中listBox1设置为公有的, 另一个操作子窗体 FrmZDZ 我在主窗体 mdiMain窗体中写 
private FrmShow childformShow; 
private void button1_Click(object sender, EventArgs e) 
        { 
          
            FrmShow form = (FrmShow)this.childformShow; 
            form.listBox1.Items.Add("要显示的字段"); 
            
        } 以上操作正常 但我又在另一个操作窗体 FrmZDZ 写,则出现错误 private FrmShow childformShow; 
private void button1_Click(object sender, EventArgs e) 
        { 
          
            FrmShow form = (FrmShow)this.childformShow; 
            form.listBox1.Items.Add("要显示的字段"); 
            
        } 
    错误为:未将对象引用设置到对象的实例。请帮忙一下好吗?

解决方案 »

  1.   

    childformShow是什么地方赋值的?估计是FrmZDZ没有这个子窗体,如果是要访问mdiMain的子窗体,则要从mdiMain中获得。
      

  2.   

    把 主窗体的 childformShow 改为public FrmZDZ :
      FrmShow form = (FrmShow)this.parent.childformShow
      

  3.   

    从mdiMain中获得,应该怎么写?谢谢!
      

  4.   

    把 主窗体的 childformShow 改为public FrmZDZ : 
      FrmShow form = (FrmShow)this.parent.childformShow 别  .parent.后面没有这个childformShow
      

  5.   

    窗体 FrmZDZ 里
    private FrmShow childformShow; 
    private void button1_Click(object sender, EventArgs e) 
            { 
                FrmShow form = new FrmShow();
                form.listBox1.Items.Add("要显示的字段"); 
            } FrmShow 不是子窗体
      

  6.   

                FrmShow form = new FrmShow();如果用new FrmShow(); 则FrmShow窗体中的原显示信息就没有了,这个窗体是打开的,是不是我设置窗体不对吗?
      

  7.   

    如果用new FrmShow();是又多新生成一个 FrmShow窗体,我只想在打开中的窗体中操作
      

  8.   

    Application.OpenForms["childformShow"]这个是刚刚打开的那个窗体
      

  9.   

    FrmZDZ与mdiMain是什么关系?如果mdiMain是FrmZDZ的Owner,可以把mdiMain中的childformShow定义为public成员,用this.Owner获得mdiMain对象,再用mdiMain对象访问childformShow。