【发布时间】:2015-01-09 21:46:42
【问题描述】:
这是一个简单的、基本的 C# 应用程序(就表单控件而言)。 DataGridView 绑定到手动填充的 DataTable(包括列标题)。有一个菜单项开始事件驱动的数据采集过程。将数据添加到 DataTable 时,控制台会显示每一行。增加了一行虚拟数据,用于验证 DataTable 数据格式(此行最终将被删除)。
启动应用程序并开始数据采集时,DataView 不会显示任何更改,仅显示虚拟行。控制台输出告诉我数据正在处理中,并且没有显示任何错误,包括过度捕获的错误消息。
Form.Refresh、DataGridView.Refresh 和 DataGridView.RefreshEdit 已尝试,但似乎没有效果。
但是...当应用程序最小化并恢复时,会出现数据更改,并在添加更新时显示更新;换句话说,它“行为”。最小化和恢复后,只要应用运行,它就会继续按预期运行。
除了在第一次激活时最小化和恢复应用之外有什么想法吗?
【问题讨论】:
-
您使用的是哪个版本的 .NET,以及哪个版本的 Windows?
-
找到了。今天从假期回来后头脑清醒,似乎不知何故,事件处理程序正在另一个线程中执行,这解释了尝试执行
DataGridView.Refresh方法时的可捕获错误。唔。在初始化期间将Form.CheckForIllegalCrossThreadCalls设置为false允许DataGridView.Refresh方法正确执行。显然,最小化和恢复调用所有线程上的刷新。很适合脑后信息堆。管理员,您可以认为此案例已结束。
标签: c# winforms datagridview datatable .net-4.0