0

我的项目中有两种形式

当我单击 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,但它意外地使程序崩溃。

4

2 回答 2

1

如果可能的话,我会建议打开表单,form2.ShowDialog因为这是一个阻塞调用,而不是form2.Show.

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

另一种方法是创建自己的事件:

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

于 2013-05-19T20:50:28.957 回答
1

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

例如,如果您有一个名为 RefreshData() 的方法,您可以在关闭 Form2 时执行此操作

Dim frm1 = CType(Form1, Application.OpenForms("Form1"))
frm1.RefreshData()

DataGridView 的底层数据源是什么?可能有更好的选择,但需要了解更多信息。

于 2013-05-19T20:52:41.447 回答