form1有 dataGridView1和dataGridView2,双击dataGridView1的数据打开form2,并把相关信息成功传递。再把form2的数据传递回form1的dataGridView2,无法实现,请指点
详细如图:

解决方案 »

  1.   

    看不到图dataGridView1 里的行是一个数据行或者一个对象的UI表示,form2 返回之后,你把这个数据行或者对象更新一下,数据绑定技术会自动更新 dataGridView1 
      

  2.   

    1。在form2中声明一个form1的全局的对象:form1 f1;
    2。在form1双击打开事件中:form2 f2=new form2(); f2.f1=this; f2.show();
    3.在form1中定义一个公共的方法public void FilldataGridView2(),用来读取数据表中的信息添加到dataGridView2的
    4。在form2的添加按钮事件中:f1.FilldataGridView2();
      

  3.   

    这种做法可行,但不严谨
    建议用构造函数传值发将第一个表的当前记录和第二个表传过去就行
    public class form2
    {
    DataRow Row1; 
    DataTable Table2;
    public form2(DataRow row1, DataTable table2)
    {
     Row1=row1;
     Table2=table2;
    }public button1_click(...)
    {
       //将row1处理后加入table2
       this.DilogResult=DilogResult.ok; //关闭窗口,返回值
    }
    }
      

  4.   

    利用构造函数传递值嘛!这种我做过!或者说将要传递的值封装在实体类中,通过get方法去值也行
      

  5.   

    定义一个两个form都能访问的类
    里面用DataTable 或是集合保存你要传输的数据form1触发事件的时候,把涉及到的行都放入这个类里面,然后调用form2的更新类 刷新界面
      

  6.   

    豉汁中华鲟;豉 chǐ;不读gǔ;跑题了……为什么不在dataset.Tables中加NewRow()呢?
      

  7.   


                            ds1.Tables["dc"].Rows.RemoveAt(dataGridView2.Rows.Count - 2);                        int ii = dataGridView1.CurrentCell.RowIndex;//获得选定行                          float a;
                            a = float.Parse(dataGridView1.Rows[ii].Cells[3].Value.ToString());//单价
                            a = float.Parse(numericUpDown1.Value.ToString()) * a;            //总金额
                            ds1.Tables["dc"].Rows.Add(textBox1.Text, dcxh.ToString("D2"), str1,
                                dataGridView1.Rows[ii].Cells[0].Value.ToString(),
                                dataGridView1.Rows[ii].Cells[1].Value.ToString(),
                                dataGridView1.Rows[ii].Cells[2].Value.ToString(),
                                dataGridView1.Rows[ii].Cells[3].Value.ToString(),
                                numericUpDown1.Value.ToString(), a, '0');//往表中添加数据行
                        dcxh++;//点菜序号这样只能增加数量为1的记录,我想通过form2修改数量,要怎么办?
      

  8.   

    在  dataGridView1 的 點擊事件裏面 啟動form2
    form2的 啟動事件裏面,讀取數據庫.
      

  9.   

    引用 4 楼 xiangxiao_bobo 的回复:
    1。在form2中声明一个form1的全局的对象:form1 f1;
    2。在form1双击打开事件中:form2 f2=new form2(); f2.f1=this; f2.show();
    3.在form1中定义一个公共的方法public void FilldataGridView2(),用来读取数据表中的信息添加到dataGridView2的
    4。在form2的添加按钮事件中:f1.Fi……
    这种做法可行,但不严谨
    建议用构造函数传值发将第一个表的当前记录和第二个表传过去就行
    public class form2
    {
    DataRow Row1;  
    DataTable Table2;
    public form2(DataRow row1, DataTable table2)
    {
     Row1=row1;
     Table2=table2;
    }public button1_click(...)
    {
      //将row1处理后加入table2
      this.DilogResult=DilogResult.ok; //关闭窗口,返回值
    }
    }