В большинстве ответов на этот вопрос я обнаружил, что разработчики перенаправили использование ToolStripDropDown
INSTEAD полосы контекстного меню. Тем не менее, для моего проекта я хотел раскрывающееся меню с уже сложным контекстным меню. Ранее в моем проекте, для другого необходимого всплывающего окна, я получил отсюда простую упаковку всплывающих окон: 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 ENTIRELY :
ToolStripMenuItem1.DropDown = New PopupBox(<your control here>)
Очевидно, что если унаследованный объект не имеет доступа к защищенному свойству ResizeRedraw
И применяет указанные значения к свойствам Margin
, Padding
и AutoSize
в конструкторе PopupBox
, ContextMenuStrip
все еще применяется отступы слева и справа от выпадающего списка. Так что нет ярлыка.
ПРИМЕЧАНИЕ : в статье CodeProject указана лицензия GNU , а также наличие некоторых предостережений относительно того, что может быть размещено в PopupBox, поэтому прочтите статью для получения более подробной информации.
Ссылки по теме / Ссылки на источник: