2014-08-28 62 views
1

嗨我有一个DataGridView,它有一个数据表作为它的数据源。我有一个使用DataTable.GetChanges()方法的函数,当我在窗体仍处于活动状态时运行该函数时,它的功能非常漂亮;然而,我把这个函数放在窗体关闭事件中,以便它在窗体关闭时检查未保存的更改,但是由于某种原因,当我从关闭方法运行时,它总是返回而没有任何更改。在关闭VB.NET的表单上检测DataGridView中未保存的更改

我猜测数据源在我的函数运行以获取更改之前会自动关闭。

反正有防止数据源被丢弃吗?我已经尝试做e.Cancel = True时,在窗体关闭事件,然后运行我的功能,它仍然无法正常工作。

任何帮助,这将不胜感激。

+0

应用程序如何/为什么关闭。还有更多的方法,并不是所有的人都调用这些事件 – Plutonix 2014-08-28 20:04:18

+0

只是当你点击窗体右上角的红色x – slister 2014-08-28 20:05:07

回答

0

我想通了。事实证明,只有当我在DataGrid中输入某些内容而没有按回车来提交该编辑时,它才保存更改。它实际上与表格关闭无关。

1

你确定你在Handles Me.FormClosing事件吗?当我使用OnFormClose事件时,我知道我有同样的困难。我的程序工作正常使用Me.FormClosing我要做的就是检查

如果dataset.has变化则 CallSaveLogic() 结束时,如果

它应该是一个DataTable中的相同。

+0

是的,我正在使用Me.FormClosing。我很困惑这一点。 – slister 2014-08-28 19:13:11

+1

您是否在任何地方接受数据表上的更改?如果在此代码被击中之前某人已经运行了datatable.acceptchanges(),那么您的更改将不会被发现。除此之外,你可能需要检查你使用的数据表的范围。 – DoomVroom 2014-08-28 19:16:24

+1

我也会在调试时检查表的值。你应该能够找到一个断点,并看到你的表格在那个点上仍然存在。在Visual Studio中执行Shift + F9,只要它不为空就查看你的表格。 – DoomVroom 2014-08-28 19:36:53