在我的应用程序中,我有一个名为“Dashboard.cs”的WindowsForm,它有一个名为dashboardTableItemsWrapper
的TableLayoutPanel。现在,一旦用户点击刷新按钮,它将清空表,为了做到这一点,这将是一旦发生点击事件将被触发的代码。
dashboardTableItemsWrapper.RowStyles.Clear();
dashboardTableItemsWrapper.ColumnStyles.Clear();
但是这样刷新按钮不起作用,相反它会在表行中追加新数据,但我想首先清空表,然后将新数据附加到它。
编辑:This page告诉我Controls.Clear
从父控件中删除控件,但不会从内存中删除它们,导致内存泄漏。编辑以增加安全处置。
for (int i = dashboardTableItemsWrapper.Count - 1; i >= 0; --i)
dashboardTableItemsWrapper[i].Dispose();
dashboardTableItemsWrapper.Controls.Clear();
dashboardTableItemsWrapper.RowCount = 0;
我知道这是一个老问题,但有一个非常简单的方法来解决这个问题。
while (tableLayoutPanel1.Controls.Count > 0)
{
tableLayoutPanel1.Controls[0].Dispose();
}
其他方法的问题是,只要从控件列表中删除一个控件,就会修改这个控件,并且循环将无法正常工作。使用此方法,您仍然可以删除第一个元素,同时仍然是列表中的元素。