【问题标题】:DataGridView with unbound DataTable grid not showing updated data until minimized and restored具有未绑定 DataTable 网格的 DataGridView 在最小化和恢复之前不显示更新的数据
【发布时间】: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


【解决方案1】:

我是 StackOverflow 的新手,刚刚注意到底部的“回答您的问题”按钮。详情见我之前的评论。

简而言之,当与调用对象在同一线程中运行时,DataGridView 会(正确地)刷新。如果您收到有关线程访问冲突的错误,请阅读上文。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多