Получение высшего владельца ToolStripDropDownItem - PullRequest
0 голосов
/ 12 июня 2010

В настоящее время я работаю над проектом, в котором в какой-то момент пользователь может щелкнуть правой кнопкой мыши по кнопке, которая вызывает 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

К сожалению, когда я пытаюсь получить управление исходным кодом из этой строки меню, оно ничего не возвращает. Любые идеи о том, как я могу получить кнопку, которая была нажата из этого инструмента StripMenuItem? Мой текущий код выглядит следующим образом (в котором 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)

Есть какие-нибудь идеи о том, как делать то, что я делал в этом первом методе, а просто двигаться вверх и вниз по лестнице?

1 Ответ

2 голосов
/ 12 июня 2010

Я бы посоветовал вместо попытки вернуться назад, чтобы увидеть, какая кнопка была нажата, и действовать соответственно, назначить поведение кнопки при ее создании.

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

Тогда вам не нужно об этом беспокоиться - когда на него нажмут, он выполнит свою работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...