右键单击:菜单选项

Vol*_*ort 3 vb.net visual-studio winforms

我想在我的应用程序中实现一个功能:

用户右键单击我的picturebox对象.好.当发生这种情况时,我的一些代码会执行并生成一个选项列表.然后会出现一个菜单,鼠标右键单击该菜单,由这些选项组成.当用户单击其中一个选项时,将删除菜单,并在给定选项index作为参数的情况下运行某些代码.

我的两个问题:

  • 如何判断用户是否点击了右键?我可以看到"点击"的事件处理程序,但包括左键点击....
  • 如何创建其中一个菜单?我的意思是,继续并右键点击一些东西.那是我正在寻找的那种菜单.

Han*_*ant 14

您需要实现图片框'MouseUp事件.检查是否单击了右键,然后使用所需的菜单项创建ContextMenuStrip.例如,您可以使用添加的项的Tag属性来帮助识别它们,以便为它们提供一个公共的Click事件处理程序.像这样:

Private Sub PictureBox1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
    If e.Button <> Windows.Forms.MouseButtons.Right Then Return
    Dim cms = New ContextMenuStrip
    Dim item1 = cms.Items.Add("foo")
    item1.Tag = 1
    AddHandler item1.Click, AddressOf menuChoice
    Dim item2 = cms.Items.Add("bar")
    item2.Tag = 2
    AddHandler item2.Click, AddressOf menuChoice
    '-- etc
    '..
    cms.Show(PictureBox1, e.Location)
End Sub

Private Sub menuChoice(ByVal sender As Object, ByVal e As EventArgs)
    Dim item = CType(sender, ToolStripMenuItem)
    Dim selection = CInt(item.Tag)
    '-- etc
End Sub
Run Code Online (Sandbox Code Playgroud)