如何清空TableLayoutPanel

问题描述 投票:2回答:2

在我的应用程序中,我有一个名为“Dashboard.cs”的WindowsForm,它有一个名为dashboardTableItemsWrapper的TableLayoutPanel。现在,一旦用户点击刷新按钮,它将清空表,为了做到这一点,这将是一旦发生点击事件将被触发的代码。

dashboardTableItemsWrapper.RowStyles.Clear();
dashboardTableItemsWrapper.ColumnStyles.Clear();

但是这样刷新按钮不起作用,相反它会在表行中追加新数据,但我想首先清空表,然后将新数据附加到它。

c# winforms
2个回答
3
投票

编辑:This page告诉我Controls.Clear从父控件中删除控件,但不会从内存中删除它们,导致内存泄漏。编辑以增加安全处置。

for (int i = dashboardTableItemsWrapper.Count - 1; i >= 0; --i) 
     dashboardTableItemsWrapper[i].Dispose();

dashboardTableItemsWrapper.Controls.Clear(); 
dashboardTableItemsWrapper.RowCount = 0;

1
投票

我知道这是一个老问题,但有一个非常简单的方法来解决这个问题。

while (tableLayoutPanel1.Controls.Count > 0)
{
    tableLayoutPanel1.Controls[0].Dispose();
}

其他方法的问题是,只要从控件列表中删除一个控件,就会修改这个控件,并且循环将无法正常工作。使用此方法,您仍然可以删除第一个元素,同时仍然是列表中的元素。

© www.soinside.com 2019 - 2024. All rights reserved.