How do you get the control that was clicked to open a ContextMenuStrip?

前端 未结 5 498
醉梦人生
醉梦人生 2020-12-16 18:47

I\'m using a ContextMenuStrip for multiple controls and I\'m trying to figure out the best way to get the control that was actually clicked on to open the Conte

相关标签:
5条回答
  • 2020-12-16 19:26

    On VB.NET 2013 this work so fine:

    Dim cms As ContextMenuStrip = CType(sender, ContextMenuStrip)
    MessageBox.Show(cms.SourceControl.Name)
    
    0 讨论(0)
  • 2020-12-16 19:32

    Your sender is a ToolStripMenuItem -- cast it.
    Its owner is a ContextMenuStrip -- get it.

    SourceControl is a property on the ContextMenuStrip and references the last control from which the ContextMenuStrip was displayed.

    0 讨论(0)
  • 2020-12-16 19:32
    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
    
    0 讨论(0)
  • 2020-12-16 19:35
    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
    
    0 讨论(0)
  • 2020-12-16 19:51
    Private Sub kdgToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles kdgToolStripMenuItem.Click
        Dim sms = (sender.GetCurrentParent()).SourceControl.name
        MsgBox(sms)
    End Sub
    

    '///Faster

    0 讨论(0)
提交回复
热议问题