.NET 右クリックメニューを表示したコントロールを取得する

右クリックメニューを表示するには
.NET Framework 1.1以前はContextMenuクラスを使用します。
.NET Framework 2.0からはContextMenuStripクラスを使用します。

右クリックメニューを表示したコントロールを取得するには
ToolStripMenuItemのOwnerプロパティよりContextMenuStripを取得し、
ContextMenuStripのSourceControlプロパティより取得できます。



Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles Me.Load
        Dim lbl As New Label
        lbl.Name = "Label1"
        lbl.Text = lbl.Name
        lbl.Location = New Point(10, 10)
        Me.Controls.Add(lbl)

        Dim cms As New System.Windows.Forms.ContextMenuStrip
        cms.Items.Add("テスト(&T)", Nothing, AddressOf ContextMenuItem_Clicked)
        lbl.ContextMenuStrip = cms
    End Sub

    Private Sub ContextMenuItem_Clicked(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim tsi As ToolStripMenuItem = DirectCast(sender, ToolStripMenuItem)
        Dim cms As ContextMenuStrip = DirectCast(tsi.Owner, ContextMenuStrip)
        Dim ctrl As Control = cms.SourceControl
        Console.WriteLine(ctrl.Name)
    End Sub

End Class

0 件のコメント: