我正在使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
注意:FieldButton是一个派生自的类Button,我已经添加了两个int's,没有什么特别之处.此外,按钮正确添加到表中.谢谢!
在读取此线程并创建了一个设置DoubleBuffered属性的自定义控件之前,我遇到了TableLayoutPanel性能问题.
public class DoubleBufferedTableLayoutPanel :TableLayoutPanel
{
public DoubleBufferedTableLayoutPanel()
{
DoubleBuffered = true;
}
}
Run Code Online (Sandbox Code Playgroud)
尝试该控件而不是标准的TableLayoutPanel.当你填充表时,我的建议是暂停和恢复布局.
| 归档时间: |
|
| 查看次数: |
2590 次 |
| 最近记录: |