C++ 窗体 : Why doesn't the richtextbox update text instantly?

标签 c++ winforms richtextbox

我使用 Winforms/C++ 编写了一个 PC 应用程序。我试图从外部 EEPROM 中获取一些数据到我的 PC 中,我在单击 Winforms 应用程序上的按钮时执行此操作。下载需要很长时间才能完成,所以我有一个文本框,我有点通过首先显示“正在下载电压波动数据来向用户指示。请稍候... ”,然后调用开始下载数据的函数(大约需要 30 秒),最后打印“done!”。

但我面临的问题是我的第一行“正在下载电压波动数据。请稍等...”没有立即显示,而是与“done!”仅在 30 秒后出现,这没有达到目的。

我不是 C++ 的新手,但这是我第一次尝试使用 WinForms,所以我不知道我应该怎么做才能立即显示文本。

是否有将文本显式刷新到 richtextbox 的函数?

我的按钮代码如下。

private: System::Void button4_Click(System::Object^  sender, System::EventArgs^  e)
     {

        this->richTextBox1->Text += "\n> Downloading Voltage fluctuation data...";

        Download_EEPROM_data();

        this->richTextBox1->Text += " done!";
     }

最佳答案

这是因为更新会在您的程序下次运行其事件处理循环时发生。因为你用冗长的函数调用阻止了它,所以它不会发生。

一种可能的解决方案是使用单独的线程进行下载,该线程将其状态通知主 GUI 线程。

关于C++ 窗体 : Why doesn't the richtextbox update text instantly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14954464/

相关文章:

c++ - 之前编译报错unqualified-id

c++ - 我可以用 g++ 编译,但得到一个有等效 cmake 的错误程序(GTK 错误)

c++ - 想出解决方案?

vb.net - 将 VB.Net 窗口置于所有窗口之上

c# - 如何在 .NET 中承载无窗口 ActiveX 控件

c# - 如何获取 RichTextBox 控件中的当前行?

c# - 巨大的字符串到 WinForm RichTextBox

c# - 为 RichTextBox 字符串的不同部分着色

C++ 线程 : EXC_BAD_ACCESS(Code=2, 地址 0x

vb.net - vb.net 表单的 friend 与公众