gpt4 book ai didi

C# DataGridView 未使用 DataTable 更新

转载 作者:太空宇宙 更新时间:2023-11-03 10:36:30 24 4
gpt4 key购买 nike

我有一个包含一些数据的 DataTable,我使用以下代码将它与我的 DataGridView 绑定(bind):

dataGridView1.DataSource = Measures.Table;

在单独的线程中,我从连接的设备读取数据并使用以下代码将其插入到我的数据表中:

DataRow row = table.NewRow();
row[ "Time" ] = dt;
foreach ( var kvp in measures )
row[ kvp.Key ] = kvp.Value;
table.Rows.Add( row );

在我的表单上,我可以使用按钮更改它的主控件。两个控件都是UserControl,其中一个由dataGridView1组成DataGridView。当我向我的 DataTable 添加一行时,我的 DataGridView 不会更新,直到我切换到另一个控件,并移回带有 DGV 的控件。

我已经阅读了堆栈上的一些解决方案,它们基本上告诉我应该使用 BindingSource,但是这段代码:

BindingSource source = new BindingSource();
source.DataSource = Measures.Table;
dataGridView1.DataSource = source;

效果不佳。

我不知道为什么会发生这种情况,因为我还创建了一个简单的应用程序,其中只有 DGV 和 DataTable 使用 Timer.Tick 事件更新并且它可以在那里工作。任何人都知道这个 DGV 没有 self 更新的原因吗?它仅在强制重绘时更新自身(使用切换控件或只是调整表单大小)

最佳答案

首先,数据网格绑定(bind)到数据表的 DataView,并在内部处理以使用 source.DefaultView。

将记录添加到表中后,通过 Items... 发出刷新

dataGridView1.Items.Refresh();

您不必重新绑定(bind)源...如果您从不同的线程执行 items.refresh,请注意,因为网格是基于 UI 而不是幕后的。

关于C# DataGridView 未使用 DataTable 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27528986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com