我使用 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/