【发布时间】:2011-06-15 14:06:40
【问题描述】:
我正在创建一个代表其他自定义控件列表的用户控件(它们非常简单:包括标签、复选框、图标和按钮)。当我将它放在表单上时,加载所有列表项需要很长时间(列表中有 100 - 150 个项目)。显示大量自定义控件列表的替代方法是什么?
我尝试使用 SuspendLayout 和 ResumeLayout 但没有多大帮助,使用它们减少了时间,但仍然太长了。
有一些想法由于各种原因我无法实现:
- 以某种方式只处理落入视图中的项目(如何忽略其他项目?)
- 实现 Grid 控件行为 - 仅在编辑模式下创建自定义控件,但很难绘制其他控件
感谢任何建议
编辑:
有一些使用 DataGridView 的建议。这是个好主意,但问题是自定义控件可以更改它的大小并在下面显示附加信息(它的行为类似于扩展器)。用DataGridView做起来不容易
【问题讨论】:
-
创建一个不需要同时在屏幕上显示大量控件的 UI 设计? :D
-
@ShaneC 我愿意!但是我被要求在屏幕上显示 100-150 个项目,我别无选择,只能为每个项目创建一个自定义控件。我应该使用分页吗?我在winforms里没见过
-
听起来像一个神形式。您可能想改用多种形式。科学证明,表单上的控件过多会使用户的大脑融化。
-
SuspendLayout和ResumeLayout有一些可衡量的效果这一事实使我认为您在 构造函数 之外的其他地方编写了布局代码,例如 @987654323 @事件处理方法?始终将初始化代码放在构造函数中,这样 Windows 就不必根据您设置的属性多次(重新)创建控件。 -
@Cody Gray 问题是我正在获取有关创建表单后这些项目应该是什么的必要信息。
标签: c# winforms performance user-controls