Могу ли я использовать MenuStrip в качестве ContextMenu?

Привет дамы и господа!

У меня есть MenuStrip, и я хочу иметь ContextMenu с такой же структурой. Могу ли я использовать свой MenuStrip как ContextMenu или быстро создать ContextMenu с DataSource из MenuStrip?

Спасибо!


person Yuriy    schedule 12.11.2010    source источник


Ответы (2)


Я не верю, что вы можете использовать предмет из MenuStrip как ContextMenuStrip. Я сталкивался с этим раньше, и я согласен с тем, что меню должно быть меню, но они, по-видимому, реализованы как разные элементы управления, потому что они требуют немного другой функциональности под обложками.

Однако вы можете использовать ContextMenuStrip в качестве раскрывающегося меню для элемента управления MenuStrip. Таким образом, вы можете добиться желаемого поведения, действуя наоборот. Спроектируйте ContextMenuStrip как хотите, а затем назначьте его DropDown свойство для ToolStripMenuItem верхнего уровня на MenuStrip, для которого вы хотите, чтобы отображалось это меню.

Или вы можете пойти длинным путем и создать два разных меню в Конструкторе, но скопировать и вставить элементы из одного меню в другое. Это, по крайней мере, сэкономит вам время на разработку двух одинаковых меню. Вы даже можете подключить обработчики событий (скажем, для Click событий каждого пункта меню) для обработки пунктов из обоих меню. В VB.NET, например, ключевое слово Handles делает это чрезвычайно простым:

Private Sub Exit_Click(ByVal sender As Object, ByVal e As EventArgs) _
   Handles exitMenuItem.Click, exitContextMenuItem.Click
   Me.Close()
End Sub
person Cody Gray    schedule 12.11.2010
comment
Это хорошо сработало для меня. Я не рекомендую метод копирования и вставки, потому что вам всегда придется синхронизировать два меню (постоянный источник ошибок во время выполнения!) - person Scott Smith; 16.07.2020

Если вы ищете краткий ответ, ответьте: Нет.

person Liviu Mandras    schedule 12.11.2010