簡體   English   中英

如何獲得被單擊以打開ContextMenuStrip的控件?

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

我正在使用ContextMenuStrip進行多個控件,我正在嘗試找出獲得實際點擊的控件以打開上下文菜單的最佳方法。 發送者只提供ToolStripMenuItem引用,它具有引用ContextMenuStrip的Owner屬性,但我無法弄清楚如何判斷單擊來自哪個控件。 必須有一個簡單的方法來檢查這個,對嗎? 我在ToolStripMenuItem的click事件中檢查它。

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

我發現了一篇關於此的類似帖子 ,但提到使用SourceControl屬性,我在這里沒有看到。

我正在使用Visual Studio 2008,VB.Net winforms。

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

您的發件人是ToolStripMenuItem - 投了它。
它的擁有者是一個ContextMenuStrip - 得到它。

SourceControl是ContextMenuStrip上的屬性,它引用顯示ContextMenuStrip的最后一個控件。

Private Sub kdgToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles kdgToolStripMenuItem.Click
    Dim sms = (sender.GetCurrentParent()).SourceControl.name
    MsgBox(sms)
End Sub

'///快點

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

在VB.NET 2013上,這項工作非常好:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM