如何在 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/

10-13 06:47