【发布时间】:2013-03-28 16:32:07
【问题描述】:
我有一个带有 TabStrip 控件的 Winforms 应用程序。在运行时,用户控件将被动态加载到不同的选项卡中。
我想在加载 UserControl 之前向用户显示“用户控件 xyz 正在加载”消息(将现有标签设置为可见并更改其文本),直到加载完全完成。
到目前为止我的方法:
- 试图在 BackgroundWorker 线程中加载用户控件。这失败了,因为我必须在加载 UserControl 期间访问 Gui-Controls
- 试图在 BackgroundWorker 线程中显示消息。这显然失败了,因为 BackgroundWorker 线程不是 UI 线程;-)
- 显示消息,调用 DoEvents(),加载 UserControl。这会导致每次加载 UserControl 时出现不同的行为(闪烁、...),并且我无法控制何时以及如何将其再次设置为不可见。
总结一下,我有两个问题:
- 如何在加载用户控件之前确保消息直接可见
- 如何确保消息再次设置为不可见,就在 UserControl 完全加载的那一刻(包括所有 DataBinding、网格格式等)
【问题讨论】:
标签: c# winforms multithreading