form1里有个da(datagridview)与数据绑定,双击da某一行弹出form2显示这行数据,并可以对这行进行编辑,修改后点form2确定按钮更新数据库,窗体之间的传值我是用的全局变量,在form1里
public static DataRow row;
在form2里也用这个row显示数据
现在的问题是点完确定后数据库是被更新了,可是form1中的da不变,如何让他也自动刷新呢?
我想在form2中的确定按钮里:da.AcceptChanges()
可是在form2中无法使用form1的da

解决方案 »

  1.   

    委托回调..即在子窗体更改数据后,点击"OK"关闭子窗体时,通过一个委托,来回调主窗体的一个方法,而则个方法完成的操作即是对主窗体中的DataGridView进行更新..
      

  2.   

    给你一个例子,以前也是帮别人解决的..参考http://community.csdn.net/Expert/topic/5189/5189957.xml?temp=.6943018
      

  3.   

    liujia_0421(SnowLover) ( )你给的那个例子我看了,那个是在传少量值的情况下吧,可是我这个一行数据有好几个字段的值呢啊,那委托的参数也得定义那么多啊,是不是很麻烦啊有没有更方便的方法呢
      

  4.   

    那你就直接传一个DataRow过去...可以灵活一点,不一定非得传string字符串啊..
      

  5.   

    你在Form2里可以使用 Form1中定义的public static DataRow row;  这是个引用变量,你在form2中直接对这个变量进行修改就是了呀. 因为是引用变量,修改的是内存中同一个地址上的变量. 所以form2中对row的修改在form1中也可以体现出来. 
    比如直接在form2中 用row.Cells[1] = ....;等等
      

  6.   

    FORM2中构造改成有参构造,用来传你的参数FORM1中调用时
    Form2 frm2 = new Form2(参数,参数...)
    frm2.ShowDialog()判断frm2.ShowDialog()==DialogResult.OK
    刷新
    否则不刷新
      

  7.   

    DATAGRADVIEW中有激活事件,当FORM2结束会到1时,这个事件会被响应。你在激活中判断修改并传值应该就可以了。
      

  8.   

    温柔一刀的想法可以试试
    既然都用静态变量传值了
    为什么不能在form2关闭的时候再给一个静态变量判断一下呢
    这样的话,如果更新就刷新,否则无改变。