如何在不停止代码执行的情况下刷新DataGridVIew

时间:2019-07-10 19:03:14

标签: c# multithreading winforms

我有一个包含(id,name,price ...)的表格BOOK,我想编辑一本书的价格,并且我希望新代码在代码运行时自动显示在数据网格视图中。我可以使用线程来做到这一点吗,我没有从数据库中获取数据的问题,我希望一旦我在SQL Server中更改书的价格,就可以自动刷新DataGridView,并且希望在不停止代码并运行的情况下发生这种情况再次或使用刷新按钮,我想使用线程来完成此操作。

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是使用刷新Datagridview.datasource的计时器(https://docs.microsoft.com/de-de/dotnet/api/system.timers.timer?view=netframework-4.8)。

请注意,这将替换所有行。如果您不希望用户看到可以调用.SuspendLayout(),请进行刷新,然后调用.ResumeLayout。

更好的解决方案是: -使用BindingList作为DataGridView的数据源 -使用计时器,该计时器仅从数据库获取更新的对象并将其替换在BindingList中 -由于BindingList,DataGridView将自动知道哪些对象已更改,并且只会重绘这些行