当form2在vb.net中关闭时触发form1的哪个事件

时间:2013-05-19 20:36:08

标签: vb.net winforms

我的项目中有两种形式

当我单击Form1上的按钮时,Form2将打开。

我在form2上有一些文本框。

当我在那个文本框中写一些文字时,我有一个按钮保存。

通过单击“保存”按钮,数据将保存到数据库,并且form2将关闭。所以显示了form1。

我在form1中有一个datagridview。它包含表格中的数据,我在表格中保存了来自form2的数据。

现在的问题是,当我点击form2上的“保存”按钮时,form1中的datagridview没有添加的最后一条记录。

这是非常期待的行为,因为我在form1.Load事件中填充datagridview中的数据。

那么我应该使用哪个事件来刷新DataGridView中的数据?

我尝试了paint event of form1,但这不起作用。

我在form1.refresh()事件中尝试了form2.Closing

我也尝试了gotFocus event of form1,但它意外地崩溃了程序。

2 个答案:

答案 0 :(得分:1)

我建议尽可能使用form2.ShowDialog打开表单,因为这是阻止调用而不是form2.Show

当表单2关闭时,代码将在ShowDialog调用后继续到下一行,允许您刷新列表。

另一种方法是创建自己的活动:

1)在form2 Public Event EventName()中定义一个新事件 2)使用表单1中的AddHandler form2Instance.EventName, AddressOf HandlerFunctionName来挂钩事件
3)在form2中保存代码后,使用RaiseEvent EventName将触发代码

答案 1 :(得分:1)

如果需要将数据刷新到DataGridView,可以在Form1上调用refresh方法。您可以在Form1 Load上调用相同的方法来填充数据。

例如,如果您有一个名为RefreshData()的方法,则可以在关闭Form2

时执行此操作
Dim frm1 = CType(Form1, Application.OpenForms("Form1"))
frm1.RefreshData()

DataGridView的基础数据源是什么?可能有更好的选择,但需要更多信息才能知道。