Simonetos The Greek
Вот рабочее решение, как я его получил от stackoverflow.com здесь:
Если вы используете класс ContextMenuStrip, который заменяет и добавляет функциональность элементу управления ContextMenu предыдущих версий, вы можете использовать аналогичный код:
For Each x As Object In Me.components.Components
If TypeOf x Is ContextMenuStrip Then
MsgBox(CType(x, ContextMenuStrip).Name)
End If
Next x
Вам нужно использовать отражение, чтобы найти каждый ContextMenuStrip в коллекции открытых форм, принадлежащих приложению.
For Each frm As Form In My.Application.OpenForms
For Each fi As System.Reflection.FieldInfo In frm.GetType.GetFields(
System.Reflection.BindingFlags.NonPublic Or _
System.Reflection.BindingFlags.Instance Or _
System.Reflection.BindingFlags.DeclaredOnly)
If fi.FieldType Is GetType(ContextMenuStrip) Then
MsgBox(frm.Name & " - " & TryCast(fi.GetValue(frm), ContextMenuStrip).Name)
End If
Next fi
Next frm
И в случае, если мы используем
MetroContextMenu контроль, мы должны заменить каждый:
ContextMenuStrip
к:
MetroFramework.Controls.MetroContextMenu