一个主窗口,包含一个dgv控件,绑定的数据源是多表的。主窗口按“+”弹出从窗口,从窗口包含一个textbox,用来输入字符作为关键字查询表table1,查询的结果只有一条,并添加到主窗口的dgv里。现在发现在从窗口写代码的时候,不能引用主窗口的dgv控件,难道只能用参数传递的办法吗?

解决方案 »

  1.   

    把dgv改成public然后在按"+"时将从窗口的Owenr = this;在从窗口输入时用
    主窗口  frm = (主窗口)this.Owner;
     就可以永frm.dgv来操作dgv控件了
      

  2.   

    出错了:("当控件被数据绑定时,无法以编程方式向DataGridView的行集合添加行。"
      

  3.   

    那你看看能不能操作DataTable来改变
      

  4.   


    可以吧.                            DataRow dr = dt.NewRow();
                                dr["F1"] = null;
                                dt.Rows.Add(dr);然后再来个FOR语句向里面加数,我就是这么做的.
      

  5.   

    太好了。同一段代码回答2个人的问题
    private void button1_Click(object sender, EventArgs e)
            {
                this.Owner.Controls["textBox1"].Text = "aaa"; 
            }
      

  6.   

        Form2 form2 = new Form2();
                form2.ShowDialog(this);
      

  7.   

        Form2 form2 = new Form2();
                form2.ShowDialog(this);
      

  8.   

    首先将主窗体中需要在其它窗体中操作的控件dgv设为public
    按"+"实例化新窗口时,将当前的主窗口传进去
    如:
       childForm child = new childForm(this);
       child.show();
     childForm为新弹出来的窗体,this为当前打开的主窗体
     新窗体中的构造方法改下
       private MainForm main=null;
       public childForm(MainForm form)
       {
           this.main = form;
       }
      之后通过main.dgv
      操作