0

を追加し、続いていくつかのsとsToolStripPanelを追加するinコードを作成します。これらのそれぞれを手動で調べて削除したり、disposeを呼び出す必要がありますか?つまり、ボタンとセパレーターをループしてdisposeを呼び出し、からを削除して、を破棄し、最後にその親コン​​トロールからを削除して破棄しますか?ToolStripToolStripButtonToolStripSeparatorToolStripToolStripPanelToolStripToolStripPanel

アップデート

Control.Disposeのドキュメントを読むとDispose、親を呼び出すと子が破棄されるようです。明確ではないのは、sをコレクションに追加するのではなく、コレクションに追加するため、ToolStripItemsが適切な「子」であるかどうかです。ToolStrip.Controlsのドキュメントを見ると、このプロパティはこのクラスに関連していないことがわかります。ToolStripToolStrip.ControlsToolStrip.Items

ToolStripPanelあなたが呼ばないのと同じことですToolStripPanel.Controls.Add(toolstrip)が、むしろToolStripPanel.Join(toolstrip)

4

2 に答える 2

1

はい、ToolStripItemsは子として扱われます。ToolStrip.Dispose()は、Itemsコレクションを繰り返し、アイテムを破棄します。アイテムは、Controlから派生したクラスではないため、Controlsコレクションに追加されません。これらは「ウィンドウのない」コントロールであり、親を使用してレンダリングします。それはそれらを非常に安くします。

ToolStripPanel.Join()は、実際にはToolStripをControlsコレクションに追加します(ToolStripControlから継承します)。余分なことを1つ行うだけで、ストリップを適切な場所に移動する必要があります。そして、4つのオーバーロードがあります。

したがって、余分な作業は必要ありません。パネルを廃棄するだけで、ツールストリップとそのアイテムも廃棄できます。

于 2012-08-29T18:13:49.713 に答える
0

これらのコンポーネントをコードで追加する場合は、手動で破棄するか、コレクションに(手動で)追加する必要があります。そうすれば、それらが自動的に破棄さcomponentsれます)。

これらのコントロール/コンポーネントをデザイナとともに/デザイナ内に追加する場合、それらを手動で破棄する必要はありません。componentsそれらは、Designerで生成されたコードによって破棄されるコレクションに追加されます。そのコレクションは、フォーム上のすべての子を破棄します。

于 2012-08-29T16:49:36.660 に答える