【问题标题】:Refreshing Windows Forms controls between actions in a 'for' loop在“for”循环中的操作之间刷新 Windows 窗体控件
【发布时间】:2011-11-07 00:37:20
【问题描述】:

我有一个问题,我不想使用多线程应用程序,因为我正在测试一些代码,我需要它是单线程的。

只有在完成后才会更新文本框。我需要以某种方式一直保持更新。除了第二个线程还有其他方法吗?

【问题讨论】:

    标签: c# windows controls


    【解决方案1】:

    只有在完成后才会更新文本框。我需要以某种方式一直保持更新。是否有另一种方法可以期待第二个线程?

    没有一个好的方法可以做到这一点。问题是,如果您在 UI 线程上执行代码,则 UI 线程无法处理消息泵中的消息,包括用于刷新 TextBox 的消息,直到您的工作完成。

    在 Windows 窗体中,您可以通过调用 Application.DoEvents() 来强制应用程序处理这些消息,但这确实是个坏主意。使用BackgroundWorker 或其他一些多线程技术将工作推送到后台线程会更好(也更安全!)。

    【讨论】:

      【解决方案2】:

      您可以尝试以下方法:

      // in for loop
      tbxMyTextBox.Text = "New text!";
      tbxMyTextBox.Refresh();
      

      我记得过去不得不做类似的事情。

      【讨论】:

        猜你喜欢
        • 2010-12-02
        • 2012-12-17
        • 2019-02-20
        • 1970-01-01
        • 1970-01-01
        • 2015-04-18
        • 1970-01-01
        • 2022-11-19
        相关资源
        最近更新 更多