首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TableLayoutPanel速度极慢

TableLayoutPanel速度极慢
EN

Stack Overflow用户
提问于 2013-09-19 20:14:39
回答 4查看 2.5K关注 0票数 2

我在C# (表单)中使用TableLayoutPanel。我的表非常大,有33列和8行。所有单元格都包含Label-objects。

我已经通过创建一个新的子类设置了我的TableLayoutPanel的DoubleBuffered = true;

代码语言:javascript
复制
public class DoubleBufferedTableLayoutPanel : TableLayoutPanel
{
    public DoubleBufferedTableLayoutPanel()
    {
        DoubleBuffered = true;
    }
}

如果用户按下按钮X,则删除所有单元格控件,并将其他标签加载到表中(从包含所有标签对象的数组中)。

DEL:this.table.Controls.Remove(this.table.GetControlFromPosition(col, row));

添加:this.table.Controls.Add(this.labelArray[row, (col+pos)], col, row);

一切正常,除了删除控件和添加新控件的过程需要5到10秒。

除了设置DoubleBuffered = true之外,还有没有其他方法来加速这个过程?

EN

回答 4

Stack Overflow用户

发布于 2016-09-28 19:32:15

使用此代码可避免在C#中处理事件的速度较慢

代码语言:javascript
复制
tableLayoutPanel1.Visible = false;
tableLayoutPanel1.Controls.Clear();
tableLayoutPanel1.SuspendLayout();

  // Processing Code

tableLayoutPanel1.ResumeLayout();
tableLayoutPanel1.Visible = true;
票数 2
EN

Stack Overflow用户

发布于 2013-09-19 20:17:30

我可能错了,但这听起来像是一个datagridview的工作,它针对这些任务进行了优化。

票数 0
EN

Stack Overflow用户

发布于 2013-09-19 20:20:27

您是否每次执行操作(回发)时都从数据库获取数据以填充tablelayoutpanel?

如果是这样,请考虑在页面首次加载时将数据延迟加载到可绑定对象中一次。然后在重新绑定时使用填充的对象(在回发时)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18894361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档