C++ Winforms:为什么富文本框不会立即更新文本?
C++ Winforms: Why doesn't the richtextbox update text instantly?
我已经用Winforms/C++编写了一个PC应用程序。我正试图从外部EEPROM中获取一些数据到我的电脑中,当我点击Winforms应用程序上的按钮时,我就会这样做。下载需要很长时间才能完成,所以我有一个文本框,首先显示"正在下载电压波动数据。请稍候…",然后我调用开始下载数据的功能(大约需要30秒),最后我打印一个"完成!"。
但我面临的问题是,我的第一行"正在下载电压波动数据。请稍候…"没有立即显示,它只在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线程。
当button_Click(…)返回时,您将看到更新,因为当前Download_EEPROM_data()调用正在阻止它。您可以使用一个单独的线程从EEPROM下载数据,完成后通知主线程,它可以发布"完成"消息。
相关文章:
- 已修改的LinkedList未在文本文件本身中更新
- 如何更新和删除文本文件中的特定逗号分隔值?C++
- 如何在 qt c++ 中更新 QWindow,文本不显示
- 无法使用 fstream 更新文本文件中的文本
- 从C++更新 QML 文本
- 如何更新基于文本的游戏的帧
- 随着C 的数据更改,更新本地Qlabel的文本
- 无法在表单的文本框中更新(或连续写入)计数器
- Gstreamer 文本叠加未更新
- MFC C++ 从编辑控件更新文本文件
- 更新:程序显示fstream的地址,而不是文本文件
- 基于 Win32 的应用程序,尝试更新标签的文本
- C++ SFML 2 文本未按预期更新
- 我想在文本框中以值显示,而不单击按钮.只需更新值
- 更新标签文本 GTK+ C++
- 基于文本的图形未正确更新
- Qt从子方法更新文本框
- 从文本文件中找到一行并更新/写入该行
- 从另一个cpp更新文本框值
- 在文本编辑程序的正常流程中,我应该更新多少字符?