在后台工作程序中向GUI添加控件

时间:2013-10-03 16:07:48

标签: c# multithreading winforms

我有一个带有顶部和底部面板的表格 用户将在顶部面板中进行选择,并且每次他们在一个关键字段上更改值时,我会销毁底部面板中的控件,然后对另一个应用程序(通过COM)进行耗时的调用并添加一个列表添加新控件。此刷新过程需要几秒钟。

我希望能够在刷新底部面板时禁用底部面板,并允许用户继续在顶部面板中工作。当然,这是在一个线程上运行的所有GUI。

画报:

enter image description here

我使用BackgroundWorker,但当然它不能直接在主线程的GUI上创建控件。

我是否可以这样做,即允许GUI的一部分被禁用并在后台重建,而用户继续在另一部分工作?

1 个答案:

答案 0 :(得分:3)

  

我是否可以这样做,即允许GUI的一部分被禁用并在后台重建,而用户继续在另一部分工作?

一般来说,没有。必须在UI线程上创建和使用GUI元素/控件,而不是其他任何地方。

创建此类场景的最佳方法通常是使用BackgroundWorker或其他技术在后台线程上获取所需的数据,然后在数据生成后构建UI完全加载。