gpt4 book ai didi

c# - 动态创建表格布局面板耗时过长

转载 作者:行者123 更新时间:2023-11-30 19:31:44 26 4
gpt4 key购买 nike

我正在使用 C# 开发 WinForms 应用程序。我最初有一个表格布局面板,我用动态创建的按钮填充它,每个单元格一个。这很好用,而且速度很快。在程序执行期间,我必须清除此表格布局面板并重新填充它,几乎具有相同的显示,但按钮更多(初始表格数量的两倍)。问题是这个过程需要很长时间(超过 10 秒)。难道我做错了什么?这是代码:

buttonTable.Controls.Clear();
buttonTable.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
buttonTable.RowCount = GetNoOfLines();
buttonTable.ColumnCount = GetNoOfLines();

for (int z = 1; z <= GetNoOfLines(); z++)
{
buttonTable.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 25));
buttonTable.RowStyles.Add(new RowStyle(SizeType.Absolute, 25));
}

for (int i = 1; i <= GetNoOfLines(); i++)
{
for (int j = 1; j <= GetNoOfLines(); j++)
{
FieldButton tempButton = new FieldButton(i, j, GetNoOfLines());
tempButton.MouseDown += new MouseEventHandler(OnFieldButtonClicked);

buttonTable.Controls.Add(tempButton, j - 1, i - 1);
}
}

注意:FieldButton 是派生自Button 的类,我在其中添加了两个int,没有什么特别之处。此外,按钮已正确添加到表格中。谢谢!

最佳答案

在阅读 this thread 之前,我遇到了 TableLayoutPanel 性能问题并创建了一个设置 DoubleBuffered 属性的自定义控件。

public class DoubleBufferedTableLayoutPanel :TableLayoutPanel
{
public DoubleBufferedTableLayoutPanel()
{
DoubleBuffered = true;
}
}

尝试使用该控件代替标准的 TableLayoutPanel。我支持在填充表格时暂停和恢复布局的建议。

关于c# - 动态创建表格布局面板耗时过长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6552428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com