Public Class ContextMenuStripCor Inherits ContextMenuStrip Private _source As Control Protected Overrides Sub OnOpening(ByVal e As System.ComponentModel.CancelEventArgs) _source = MyBase.SourceControl MyBase.OnOpening(e) End Sub Public Shadows ReadOnly Property SourceControl() As Control Get Return _source End Get End Property End Class
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim s As New ContextMenuStripCor Dim m As New ToolStripMenuItem Dim c As New ToolStripComboBox c.Items.Add("azerty") c.Items.Add("qsdfgh") c.Name = "ToolStripComboBox1" AddHandler c.SelectedIndexChanged, AddressOf Msg m.Text = "Test" m.DropDownItems.Add(c) m.Name = "ToolStripMenuItem1" s.Items.Add(m) s.Name = "ContextMenuStrip1" Button1.ContextMenuStrip = s End Sub Sub Msg(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripComboBox2.SelectedIndexChanged 'Le combo Dim c As ToolStripComboBox = CType(sender, ToolStripComboBox) MessageBox.Show(c.Name) 'L'item de menu Dim m As ToolStripMenuItem = CType(c.OwnerItem, ToolStripMenuItem) MessageBox.Show(m.Name) 'Le menu context Dim s As ContextMenuStripCor = CType(m.GetCurrentParent(), ContextMenuStripCor) MessageBox.Show(s.Name) 'Le bouton Dim b As Button = CType(s.SourceControl, Button) MessageBox.Show(b.Name) End Sub
Private Sub Msg(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripComboBox1.SelectedIndexChanged, ToolStripComboBox2.SelectedIndexChanged 'Le combo Dim c As ToolStripComboBox = CType(sender, ToolStripComboBox) MessageBox.Show(c.Name) 'Le menu context Dim t As ContextMenuStrip = c.GetCurrentParent() MessageBox.Show(t.Name) 'Le bouton Dim b As Button = CType(t.SourceControl, Button) MessageBox.Show(b.Name) End Sub
s.Items.Add(c)
s.Items.Add(m)
'Le MenuItem Dim m As ToolStripMenuItem = DirectCast(c.OwnerItem, ToolStripMenuItem) MessageBox.Show(m.Text) 'Le menu context Dim t As ContextMenuStrip = m.GetCurrentParent() MessageBox.Show(t.Text)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate _Source As Control Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim s As New ContextMenuStrip Dim m As New ToolStripMenuItem Dim c As New ToolStripComboBox c.Items.Add("azerty") c.Items.Add("qsdfgh") c.Name = "ToolStripComboBox1" AddHandler c.SelectedIndexChanged, AddressOf Msg m.Text = "Test" m.DropDownItems.Add(c) m.Name = "ToolStripMenuItem1" s.Items.Add(m) s.Name = "ContextMenuStrip1" AddHandler s.Opened, AddressOf Context_Opened Button1.ContextMenuStrip = s End Sub Private Sub Context_Opened(ByVal sender As Object, ByVal e As System.EventArgs) _Source = CType(sender, ContextMenuStrip).SourceControl End Sub Sub Msg(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Le bouton Dim b As Button = CType(_Source, Button) MessageBox.Show(b.Name) End Sub