首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要在ToolStripPanel、ToolStrip和ToolStripItems上调用dispose吗?

我需要在ToolStripPanel、ToolStrip和ToolStripItems上调用dispose吗?
EN

Stack Overflow用户
提问于 2012-08-29 16:32:16
回答 2查看 943关注 0票数 0

我在代码中构建了一个ToolStripPanel,其中我添加了一个ToolStrip,然后添加了几个ToolStripButtons和ToolStripSeparator,是否需要手动遍历并删除和/或调用dispose?也就是说,循环遍历按钮和分隔符并调用dispose对其进行处理,然后从ToolStripPanel中删除ToolStripPanel中的ToolStrip和dispose ToolStrip,最后从它的父控件中删除ToolStripPanel并对其进行处理?

更新

阅读Control.Dispose的文档,似乎调用父级的Dispose将释放这些子级。不清楚的是ToolStripItems是否是ToolStrip的适当“子”,因为您没有将它们添加到ToolStrip.Controls集合中,而是将它们添加到ToolStrip.Items集合中。当查看ToolStrip.Controls文档时,它说这个属性与这个类无关。

ToolStripPanel相同的是,您不调用ToolStripPanel.Controls.Add(toolstrip),而是调用ToolStripPanel.Join(toolstrip)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-29 18:13:49

是的,ToolStripItems被当作儿童对待。ToolStrip.Dispose()迭代项集合并处理项。这些项没有添加到控件集合中,因为它们不是从Control派生的类。它们是“无窗口”控件,并使用它们的父控件来呈现自己。所以它们很便宜。

实际上,ToolStripPanel.Join()确实将ToolStrip添加到Controls集合中(ToolStrip确实从控件继承)。它只需要做一件额外的事情,它需要移动在正确的位置。有四个过载。

因此,没有额外的工作需要,处置面板是足够得到它的工具条和他们的项目以及处置。

票数 1
EN

Stack Overflow用户

发布于 2012-08-29 16:49:36

如果要在代码中添加这些组合,则必须手动释放它们,或者将它们(手动)添加到components集合中,它将为您处理它们)。

如果在设计器中添加了这些控件/组件,则不需要手动处理它们。它们将被添加到一个components集合中,该集合将由设计器生成的代码处理。这个集合处理了表格上所有的孩子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12182520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档