clsContextPopUpMenu
さまざまなコントロールで使用できるいくつかの基本的な関数(egcopy)を使用してContextMenuStripを作成するクラスがあります。
Friend Sub New(ByRef objControl As System.Windows.Forms.Control)
m_objControlContainer = objControl
m_mnuCopyCell2Clipboard = New ToolStripMenuItem("Copy Cell")
m_PopupMenu = New ContextMenuStrip
m_PopupMenu.Items.AddRange(New ToolStripMenuItem() {m_mnuCopyCell2Clipboard})
End Sub
たとえば、DataGridViewで使用できますDGVTable:
Private m_objPopUpMenu As clsContextPopUpMenu
m_objPopUpMenu = New clsContextPopUpMenu(CType(DGVTable, System.Windows.Forms.Control))
ただし、m_objPopUpMenu
上記のdatagridviewを持つフォームには関連付けられていないことに注意してください。MSDNのContextMenuStripコンストラクターの説明によるとm_objPopUpMenu
、フォームの子ではないため、自動的に破棄することはできないと思います。
私の質問は、m_objPopUpMenu
デザイナーで明示的に処分する必要があるかどうかです。
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
**m_objPopUpMenu.Dispose()**
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
より広い質問は、オブジェクト/リソースを自分でいつ処分する必要があるかということです。もちろん、gcコレクターは利用可能なすべてのメモリを解放するマジシャンではありません。上記のように、Dispose Subでオブジェクト/リソースを常に破棄できますか?