在我的表单中,我有MenuStrip,ContextMenuStrip和DataGridView 同样的ContextMenuStrip是一个MenuStripItem作为“DropDown”和DataGridView作为“ContextMenuStrip”的附件。这很好用。
问题是我必须知道什么是打开ContextMenuStrip(MeuStripItem或DataGridView)所以我可以根据它隐藏一些项目。
这是我的方法,我尝试确定调用者是否是不起作用的MenuStrip1。
Private Sub mycontextmenu_Opening(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles mycontextmenu.Opening
If CType(sender, MenuStrip) Is MenuStrip1 Then
ExitToolStripMenuItem.Visible = False
Else
ExitToolStripMenuItem.Visible = True
End If
End Sub
此处出现错误消息:无法将“System.Windows.Forms.ContextMenuStrip”类型的对象强制转换为“System.Windows.Forms.MenuStrip”。
请帮助解决所描述的问题。
答案 0 :(得分:2)
sender将成为上下文菜单条 源控件属性将检索所有者实例
Private Sub mycontextmenu_Opening(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles mycontextmenu.Opening
If mycontextmenu.SourceControl is MenuStrip1 Then
ExitToolStripMenuItem.Visible = False
Else
ExitToolStripMenuItem.Visible = True
End If
End Sub