在我的应用程序中,我有一个名为" Dashboard.cs"的WindowsForm。其中有一个名为dashboardTableItemsWrapper
的TableLayoutPanel。
现在,一旦用户点击刷新按钮,它将清空表,为了做到这一点,这将是一旦点击事件将被触发将被触发的代码。
dashboardTableItemsWrapper.RowStyles.Clear();
dashboardTableItemsWrapper.ColumnStyles.Clear();
但是这样刷新按钮不起作用,相反它会在表格行中附加新数据,但我想先清空表格,然后将新数据添加到表格中。
答案 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();
}
其他人的问题是,只要从控件列表中删除一个控件,就会修改一个控件,并且循环将无法正常工作。使用这种方法,您仍然可以删除第一个元素,同时仍然是列表中的元素。