我有一个像MS Word这样可缩放的表单界面。该表单包含位于表单各处的+70控件(Richtextbox,复选框等)。
问题是生成表单需要2.5秒。使用panel.Controls.Add(ctrl)单独添加70个控件需要1秒钟。 (每次通话16毫秒)。
有没有办法缓存整个空白表单? 也许聪明的人知道另一种生成表单的方法吗?
答案 0 :(得分:3)
这些控件是通过设计器添加的,还是在代码中手动添加?如果是后者,我建议您在加载控件之前在SuspendLayout
上调用Form
,然后在加载完成后调用ResumeLayout(true)
。
此外,如果在表单可见时添加这些控件,则暂停和恢复绘图可能会有很大帮助。有关如何执行此操作的详细信息,请参阅this question的已接受答案。
修改强>
为什么需要70个RichTextBox
控件?您是否考虑过重新设计表单以便不需要这么多(例如,为了多种目的重用一些表单)?您是否已调查自定义控件以查看是否可以在自己的构造函数中获得任何速度?
答案 1 :(得分:0)
经过大量跟踪后,我们发现自定义继承RichTextbox的构造函数每次调用需要7-8毫秒。 70个控制意味着70 * 8 = 560毫秒。
我们只是复制或克隆已经构建的CustomRichTextBox吗?这会有所作为吗?