Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WinForms UI在用户控件中时的加载速度要慢得多_C#_.net_Winforms_User Controls_Loading - Fatal编程技术网

C# WinForms UI在用户控件中时的加载速度要慢得多

C# WinForms UI在用户控件中时的加载速度要慢得多,c#,.net,winforms,user-controls,loading,C#,.net,Winforms,User Controls,Loading,我的应用程序的主界面相当大。具有outlook类型的计划控件。以及大约40个.NET基本控件 如果所有这些都放进表单本身,它加载速度很快,一切看起来都很棒 我最近将所有这些控件移动到一个用户控件中,然后通过反射,从磁盘加载程序集,然后将其强制转换到(控件),并以我的形式调用以下内容: this.Controls.Add(myUserCtrl); 由于将所有内容都移动到用户控件中,我从2-3秒的加载时间变为15-20秒的加载时间。即使我仍然加载相同数量的控件 有人能解释为什么将控件移动到User

我的应用程序的主界面相当大。具有outlook类型的计划控件。以及大约40个.NET基本控件

如果所有这些都放进表单本身,它加载速度很快,一切看起来都很棒

我最近将所有这些控件移动到一个用户控件中,然后通过反射,从磁盘加载程序集,然后将其强制转换到(控件),并以我的形式调用以下内容:

this.Controls.Add(myUserCtrl);
由于将所有内容都移动到用户控件中,我从2-3秒的加载时间变为15-20秒的加载时间。即使我仍然加载相同数量的控件

有人能解释为什么将控件移动到UserControl中会产生如此糟糕的负载性能吗


我已经尝试了一切,包括调用挂起/恢复布局函数。

将代码从
表单加载
移动到构造函数

在Form_Load中,控件的句柄已经创建,因此所有更新都需要进行本机调用来更新实际的窗口句柄。
这可能很慢,这取决于你在做什么。(调用
BeginUpdate
/
EndUpdate
会有所帮助)

通过将代码移动到构造函数,可以在创建句柄之前初始化所有内容


取决于代码的功能,这不一定会有任何好处。

当您在调试器中暂停它时,它挂起在哪里?@Slaks-您对我删除的帖子的评论被证明是正确的。我创建了一个应用程序来测试这个理论,证据支持你的评论。非常感谢。请不要在标题中添加“C#.NET WinForms”。把它们留在标签上。谢谢你的沙拉。。。难以置信,这解决了我所有的问题:-)还要注意的是,正在将内容从On_Paint()移动到构造函数。同样有效。我的userControl的加载时间从大约3-4秒下降到大约0.5秒。投票结果是肯定的。:)