日期:2014-05-20  浏览次数:20720 次

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



------解决方案--------------------
委托回调..

即在子窗体更改数据后,点击 "OK "关闭子窗体时,通过一个委托,来回调主窗体的一个方法,而则个方法完成的操作即是对主窗体中的DataGridView进行更新..
------解决方案--------------------
你在Form2里可以使用 Form1中定义的public static DataRow row; 这是个引用变量,你在form2中直接对这个变量进行修改就是了呀. 因为是引用变量,修改的是内存中同一个地址上的变量. 所以form2中对row的修改在form1中也可以体现出来.
比如直接在form2中 用row.Cells[1] = ....;等等
------解决方案--------------------
你给的那个例子我看了,那个是在传少量值的情况下吧,可是我这个一行数据有好几个字段的值呢啊,那委托的参数也得定义那么多啊,是不是很麻烦啊
===========================================================
觉得变量多又常用的 自定义一个类型 就好了
------解决方案--------------------
FORM2中构造改成有参构造,用来传你的参数

FORM1中调用时
Form2 frm2 = new Form2(参数,参数...)
frm2.ShowDialog()

判断frm2.ShowDialog()==DialogResult.OK
刷新
否则不刷新
------解决方案--------------------
DATAGRADVIEW中有激活事件,当FORM2结束会到1时,这个事件会被响应。你在激活中判断修改并传值应该就可以了。

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