Большинство ответов на этот вопрос я нашел разработчики переадресацией использовать ToolStripDropDown
ВМЕСТО полосы контекстного меню. Тем не менее, для моего проекта я хотел выпадал из уже сложного контекстного меню. Раньше в моем проекте, для другого всплывающего окна, я получил простую всплывающую оболочку отсюда: http://www.codeproject.com/Articles/17502/Simple-Popup-Control. Это простое всплывающее окно было унаследовано от ToolStripDropDown
. Вот основной код VB:
Public Class PopupBox
Inherits ToolStripDropDown
Private mHost As ToolStripControlHost = Nothing
Public ReadOnly Property Host As ToolStripControlHost
Get
Return mHost
End Get
End Property
Public Sub New(content As Control)
MyBase.New()
Me.ResizeRedraw = True
Me.Margin = Padding.Empty
Me.Padding = Padding.Empty
Me.AutoSize = True
Me.mHost = New ToolStripControlHost(content)
Me.mHost.Margin = Padding.Empty
Me.mHost.Padding = Padding.Empty
Me.mHost.AutoSize = True
Me.Items.Add(Me.mHost)
End Sub
End Class
Оказывается, что это всплывающее окно идеально подходит для использования как есть, чтобы применить выпадающий (без дополнения) к существующему контекстного меню. Вот шаги:
- Добавить
ToolStripMenuItem
в вашем контекстном меню, как обычно будет. В этом примере элемент называется «ToolStripMenuItem1».
- В соответствующем месте (конструктора или открытия случае контекстного меню), добавьте следующий код, чтобы заменить DropDown ПОЛНОСТЬЮ:
ToolStripMenuItem1.DropDown = New PopupBox(<your control here>)
По-видимому, не унаследованный объект, обращающийся к protected ResizeRedraw
property И применение указанных значений к Margin
, Padding
и AutoSize
свойствам в конструкторе PopupBox
, ContextMenuStrip
по-прежнему применяется прокладка слева и справа от выпадающего меню. Таким образом, нет ярлыка.
ПРИМЕЧАНИЕ: В статье CodeProject указывает на GNU License, а также, что некоторые оговорки к тому, что может быть организовано PopupBox, так что читайте статью для более подробной информации.
Связанные/Источник ссылки:
Есть ли причина, вы используете ContextMenuStrip, чтобы сделать это а не просто ToolStripDropDown? – LarsTech
@Lars, ContextMenuStrip используется с правым щелчком мыши по datagridview. – Reafidy
@Lars, моя ошибка - я понимаю, что вы имеете в виду сейчас. Использование toolstripdropdown вместо contextmenustrip для ** подменю ** непосредственно. Можете ли вы оставить свой комментарий в качестве решения, пожалуйста. – Reafidy