删除 TabPage:处置或清除或两者兼而有之?

Dav*_*vid 5 .net c# tabcontrol winforms

我正在开发一个 Windows 窗体,它有一个名为 tabDocuments 的 TabControl。我遇到了这段代码,它从 TabControl 中删除所有页面。

for (int i = tabDocuments.TabPages.Count - 1; i > -1; i--) {
    tabDocuments.TabPages[i].Dispose();
}
    tabDocuments.TabPages.Clear();
Run Code Online (Sandbox Code Playgroud)

写这段代码的人已经离开一段时间了。我试图理解为什么代码在处理每个 tabPages 之后调用 Clear() (对我来说看起来没有必要)。谁能向我解释一下为什么吗?或者调用 Clear() 是额外的吗?

Phi*_*ace 4

此片段来自 Control.Dispose:

        if (this.parent != null)
        {
            this.parent.Controls.Remove(this);
        }
Run Code Online (Sandbox Code Playgroud)

因此,您只需调用 Dispose,而不是 Clear。

  • @Xaero,尽管如此,您关于控件将其自身从其父级中删除的说法是正确的。您只有在拆卸了组件后才知道这一点。在该方法的公共文档中没有任何地方说它将自身从其父级中删除。此功能可能会在框架的未来版本中更改。我知道调用程序集可以针对特定版本的 .NET 框架。但是,根据公共文档调用该方法不是更好的做法吗(即使没有必要)。 (2认同)