[英]TableLayoutPanel extremely slow
我在 C#(表單)中使用TableLayoutPanel
。 我的表很大,有 33 列和 8 行。 所有單元格都包含Label
對象。
我已經設置了DoubleBuffered = true;
通過創建一個新的子類來更改我的 TableLayoutPanel:
public class DoubleBufferedTableLayoutPanel : TableLayoutPanel
{
public DoubleBufferedTableLayoutPanel()
{
DoubleBuffered = true;
}
}
如果用戶按下按鈕 X,將刪除所有單元格控件,並將其他標簽加載到表格中(來自包含所有 Label 對象的數組)。
DEL: this.table.Controls.Remove(this.table.GetControlFromPosition(col, row));
添加: this.table.Controls.Add(this.labelArray[row, (col+pos)], col, row);
一切正常,只是刪除控件和添加新控件的過程需要五到十秒鍾。
除了設置DoubleBuffered = true
之外,還有其他方法可以加快此過程嗎?
使用此代碼可避免 C# 中事件處理緩慢
tableLayoutPanel1.Visible = false;
tableLayoutPanel1.Controls.Clear();
tableLayoutPanel1.SuspendLayout();
// Processing Code
tableLayoutPanel1.ResumeLayout();
tableLayoutPanel1.Visible = true;
我可能錯了,但這聽起來像是針對這些任務優化的 datagridview 的工作。
每次執行操作(回發)時,您是否都從數據庫獲取數據以填充 tablelayoutpanel?
如果是這樣,請考慮在頁面首次加載時將數據延遲加載到可綁定對象中。 然后在重新綁定時使用填充的對象(在回發時)。
試試這個代碼
TableLayoutPanel.GetType().GetProperty("DoubleBuffered",
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)
.SetValue(TableLayoutPanel, true, null);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.