我目前正在开展一个项目,在这个项目中,用户可以右键单击一个按钮,调出一个contextMenuStrip。我已经能够从该条带中准确地找到所有者,并按照以下方式操作单击按钮:
Dim myItem As ToolStripMenuItem = CType(sender, ToolStripMenuItem)
Dim cms As ContextMenuStrip = CType(myItem.Owner, ContextMenuStrip)
Dim buttonPressed As DataButton = DirectCast(cms.SourceControl, DataButton)
但现在是棘手的部分。在这个contextmenuStrip中,我有一个包含多个项目的DropDown菜单。我认为你可以按照
的方式按照上面的方式在梯子上工作 ToolStripDrowpDownItem > ToolStripDropDownMenu > ToolStripMenuItem > ContextMenuStrip
不幸的是,当我尝试从这个menuStrip获取sourcecontrol时,它返回Nothing。关于我如何获得从这个toolStripMenuItem按下的按钮的任何想法?我当前的代码如下(sourceControl是Nothing)
Dim myItem As ToolStripDropDownItem = CType(sender, ToolStripDropDownItem)
Dim dropDown As ToolStripDropDownMenu = CType(myItem.Owner, ToolStripDropDownMenu)
Dim menuItem As ToolStripMenuItem = CType(dropDown.OwnerItem, ToolStripMenuItem)
Dim cms As ContextMenuStrip = CType(menuItem.Owner, ContextMenuStrip)
Dim buttonPressed As DataButton = DirectCast(cms.SourceControl, DataButton)
关于如何在第一种方法中做我所做的事情的任何想法,但只是从下一步开始工作?
答案 0 :(得分:2)
我建议不要试图向后工作以查看按下了什么按钮并相应地采取行动,在创建按钮时指定按钮的行为。
Dim button As New ToolStripMenuItem("do something")
AddHandler button.Click, AddressOf DoSomething
...
Public Sub DoSomething(ByVal sender as Object, ByVal e as System.EventArgs)
'do something
End Sub
然后你不必担心它 - 当它被点击时,它将完成它的工作。