相关疑难解决方法(0)

超慢C#自定义控件

我做了一个自定义控件,它是一个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

c# optimization user-controls

2
推荐指数
1
解决办法
5558
查看次数

标签 统计

c# ×1

optimization ×1

user-controls ×1