代码之家  ›  专栏  ›  技术社区  ›  Shawn Steward

如何获取单击以打开ContextMenuStrip的控件?

  •  8
  • Shawn Steward  · 技术社区  · 15 年前

    我用的是一个 ContextMenuStrip 对于多个控件,我正在尝试找出获得实际单击以打开上下文菜单的控件的最佳方法。发送者只是给出了 ToolStripMenuItem 右键菜单 ,但我不知道如何辨别单击来自哪个控件。必须有一个简单的方法来检查这个,对吗?我正在登记 的单击事件。

    Friend WithEvents mnuWebCopy As System.Windows.Forms.ToolStripMenuItem
    ...
    Private Sub mnuWebCopy_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnuWebCopy.Click
    

    我找到了一个 similar post SourceControl 我在这里看不到的财产。

    我正在使用VisualStudio2008,VB.NETWinForms。

    5 回复  |  直到 8 年前
        1
  •  23
  •   Tim Lentine    15 年前
    Private Sub mnuWebCopy_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnuWebCopy.Click
    
    Dim myItem As ToolStripMenuItem = CType(sender, ToolStripMenuItem)
    Dim cms As ContextMenuStrip = CType(myItem.Owner, ContextMenuStrip)
    
    MessageBox.Show(cms.SourceControl.Name)
    
    End Sub
    
        2
  •  6
  •   Jay    15 年前

    你的发送者是一个ToolStripMenuItem——投它吧。
    它的所有者是一个ContextMenuStrip——明白了。

        3
  •  0
  •   KDG    10 年前
    Private Sub kdgToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles kdgToolStripMenuItem.Click
        Dim sms = (sender.GetCurrentParent()).SourceControl.name
        MsgBox(sms)
    End Sub
    

    “///更快

        4
  •  0
  •   Joe Mayo    7 年前
    Private Sub cmsRightClick_Click(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles cmsRightClick.MouseClick
        Dim s As String = CType(sender, ContextMenuStrip).GetItemAt(CType(sender, ContextMenuStrip).DisplayRectangle.X, _
         CType(sender, ContextMenuStrip).DisplayRectangle.Y + e.Y).Text.Trim()
    
    
        MsgBox(s)
        Select Case s 
            Case Is = "Select Summary Total"
                Dim x = 0
            Case Is = "Select Collections"
                Dim x = 1
            Case Is = "UnSelect"
                Dim x = 2
            Case Is = "Reconcile"
                Dim x = 3
            Case Is = "Undo Reconciliation"
                Dim x = 4
        End Select
    End Sub
    
        5
  •  -1
  •   Andrew Brooke    9 年前

    Dim cms As ContextMenuStrip = CType(sender, ContextMenuStrip)
    MessageBox.Show(cms.SourceControl.Name)