我有一个像MS Word一样的可缩放的表单界面。该表单包含+70个控件(Richtextbox、checkbox等),这些控件位于整个表单中。
问题是生成表单需要2.5秒。仅用panel.Controls.Add( ctrl)添加70个控件只需要1秒。(每个呼叫16毫秒)。
有没有办法缓存整个空白表单?也许某个聪明的人知道另一种生成表单的方法?
发布于 2009-12-10 22:26:34
这些控件是通过设计器添加的,还是在代码中手动添加的?如果是后者,我建议在加载控件之前在Form上调用SuspendLayout,然后在完成加载后调用ResumeLayout(true)。
此外,如果这些控件是在窗体可见时添加的,那么暂停和恢复绘图可能会有很大帮助。有关如何做到这一点的更多信息,请参阅this question的公认答案。
编辑
为什么你需要70个RichTextBox控件?您是否考虑过重新设计表单,以便不需要这么多表单(例如,将一些表单重用于多种用途)?你有没有研究过你的自定义控件,看看是否可以在你自己的构造函数中获得任何速度?
发布于 2009-12-10 23:40:58
经过大量跟踪,我们发现自定义继承RichTextbox的构造函数每次调用需要7-8毫秒。70控制意味着70 *8= 560毫秒。
我们不能只复制或克隆已经构建的CustomRichTextBox吗?这会有区别吗?
https://stackoverflow.com/questions/1881294
复制相似问题