如何清空TableLayoutPanel

时间:2015-05-05 02:13:25

标签: c# winforms

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

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

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