如何确定哪个控件打开ContextMenuStrip

时间:2015-07-12 07:33:48

标签: vb.net

在我的表单中,我有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”。
请帮助解决所描述的问题。

1 个答案:

答案 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