c# - .NET Windows 窗体刷新控件

标签 c# .net winforms refresh

我有一个简单的程序,它在按下按钮时循环遍历结果集,并对这个结果集(存储在 DataTable 中)执行操作。在循环期间,我更新了一个 RichTextBox、2 个标签和一个 ToolStripStatusLabel 的文本。这些在循环期间不会刷新,因此在循环中处理完每个项目后,我会执行 this.Refresh()。除非我单击程序中的任何内容,否则它会起作用,此时它说它没有响应,并且在 foreach 循环完成之前不会刷新表单。

private void myBtn_Click(object sender, EventArgs e)
{
    // Query database and store results in DataTable dt.

    foreach (DataRow dr in dt.Rows)
    {
       // Process row data.
       // Update RichTextBox, labels, and ToolStripStatusLabel.
       this.Refresh();
    }
}

这里有什么问题吗?有一个更好的方法吗?这是 Windows Forms使用 C# 的应用程序。

最佳答案

它说“没有响应”,因为您占用了 GUI 线程。如果您要执行冗长的操作,请考虑改用后台线程。

查看 BackgroundWorker开始。

这是一个 threading tutorial ,以防万一。

关于c# - .NET Windows 窗体刷新控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1498988/

相关文章:

.net - 在多线程期间共享数据 - 非静态变量可以吗?

c# - 无法加载文件或程序集 'Microsoft.SqlServer.Types,版本 = 11.0.0.0

c# - ReadOnly 和 Enabled 之间的主要区别是什么?

c# - 删除 GDI+ 对象

c# - C# (.Net) 的面向方面编程 (AOP) 解决方案及其功能

c# - 将设备添加到 Azure IoT 中心时出现协议(protocol)版本无效错误

.NET Web API : Class level validation attribute causes Web API to throw ArgumentNullException if instance is null

c# - 我如何将带有动态变量的 JSON 反序列化为一个类

c# - 模拟基于 Atom 的 pc 环境

c# - 如何使用内部异常对代码进行单元测试?