加载包含200多个控件的Windows窗体

Mir*_*ine -1 .net c# multithreading loading winforms

我的表格有超过200个控件!加载表单并绑定控件大约需要7秒钟.

我用一些性能分析器跟踪了应用程序,但除了构造函数之外,我没有找到任何带有HOT标志的东西.

我想知道是否可以像backgroundWorker(多线程)一样调用InitializeComponent方法!

Fre*_*örk 8

不,线程不会帮助你.需要在UI线程上创建控件才能使应用程序正常工作.

唯一合理的方法是查看在创建表单时是否确实需要创建所有 200个控件,或者如果您可以"按需"加载它们.

在不知道你的应用程序的情况下,不可能提供更具体的指导,但是你可能会遇到并非所有控件都在同时使用的情况,而是存在某种分页.如果是这种情况,则可以将每个"页面"制作成用户控件,以便您可以根据需要加载和卸载页面.


Hen*_*man 6

更好的想法是使用TabControl拆分UI.它内置了延迟加载.

每个MSDN:

在显示选项卡页面之前,不会创建TabPage中包含的控件,并且在显示选项卡页面之前不会激活这些控件中的任何数据绑定.

而这种设计直接针对您的问题.