超慢C#自定义控件

aid*_*dan 2 c# optimization user-controls

我做了一个自定义控件,它是一个FlowLayoutPanel,我在其中放了一堆其他自定义控件(只是按钮,每个都有三个标签和一个PictureBox叠加)

它可以正常使用大约100个按钮,但是最多可以达到1000个按钮并且它有问题.撞到高达5000并且它在20秒后死亡.

我有很少的自定义代码,我明智地使用暂停和恢复布局.

那么我做错了什么?我确信我的(相当快速的)计算机应该能够处理几千个按钮和标签.

(我对C#GUI很新,所以也许我应该做的事情完全不同.)

编辑1:

这几乎是目前唯一的自定义代码:

flowLayoutPanel1.SuspendLayout();
foreach (DataRow row in dt.Rows) // dt is from a DB query
{
    flowLayoutPanel1.Controls.Add(new PersonButton(row));
}
flowLayoutPanel1.ResumeLayout();
Run Code Online (Sandbox Code Playgroud)

并在PersonButton构造函数中:

this.label1.Text = row["FirstName"].ToString().Trim() + " "
    + row["Surname"].ToString().Trim();
Run Code Online (Sandbox Code Playgroud)

(还应该附上图片,但我不确定是否有人能看到它.)

编辑2:

我想我应该使用DataGridView或ListView,但我想要的不仅仅是一行文本和每行一个小图标; 我希望它看起来类似于firefox中的下载视图(Ctrl + J).(见截图)

非常感谢您的所有投入,BTW.我想我必须重新思考......

alt text http://img156.imageshack.us/img156/1057/capture.png

Mat*_*ton 14

C#WinForm应用程序可以处理任何类型控件的1000个实例吗?我不是WinForm Guru,但是你对你的应用程序的期望可能是不合理的.

您希望显示1000多种任何类型的控件这一事实可能表明您正在从错误的方向接近软件设计.

  • 同意!为什么要在表单上显示1000个控件? (2认同)
  • 你们从来没有在专家级玩过扫雷吗? (2认同)