如何在 FlowLayoutPanel 中正确处理用户控件?flowlayoutpanel1.Controls.RemoveAt(i)
就够了吗?
我只是找不到 flowlayoutpanel1.Controls
的 .Dispose() ......
最佳答案
如果您希望删除所有控件,您可以向后遍历控件集合,而不是创建副本(见下文)。
我发现这提供了最好的解决方案,特别是如果您打算在之后重新填充它。强制 GC 收集有助于在有大量控件的情况下检查内存使用情况。
FlowLayoutPanel.SuspendLayout();
if (FlowLayoutPanel.Controls.Count > 0) {
for (int i = (FlowLayoutPanel.Controls.Count - 1); i >= 0; i--) {
Control c = FlowLayoutPanel.Controls[i];
c.SomeEvent -= SomeEvent_Handler;
c.Dispose();
}
GC.Collect();
}
FlowLayoutPanel.ResumeLayout();
关于c# - 从 FlowLayoutPanel 中正确删除控件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4774727/