Getting the highest owner of a ToolStripDropDownItem

Posted by andyperfect on Stack Overflow See other posts from Stack Overflow or by andyperfect
Published on 2010-06-11T21:34:13Z Indexed on 2010/06/12 3:53 UTC
Read the original article Hit count: 339

Filed under:
|

I'm currently working on a project in which at one point, the user may right click a button which brings up a contextMenuStrip. I am already able to find the owner accurately from that strip, and manipulate the button clicked as follows:

Dim myItem As ToolStripMenuItem = CType(sender, ToolStripMenuItem)
Dim cms As ContextMenuStrip = CType(myItem.Owner, ContextMenuStrip)

Dim buttonPressed As DataButton = DirectCast(cms.SourceControl, DataButton)

But now for the tricky part. Within this contextmenuStrip, I have a DropDown menu with multiple items in there. I would assume you would be able to work your way up the ladder doing casts like above in the manner of

 ToolStripDrowpDownItem > ToolStripDropDownMenu > ToolStripMenuItem > ContextMenuStrip

Unfortunately, when I try to get the sourcecontrol from this menuStrip, it return Nothing. Any ideas on how I can get the button that was pressed from this toolStripMenuItem? My current code is as follows (in which the sourceControl is 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)

Any ideas on how to go about doing what I did in that first method, but just working my way up from further down the ladder?

© Stack Overflow or respective owner

Related posts about .NET

Related posts about vb.net