VS 2013 SDK: Как добавить разделитель строк в меню CommandBarPopup?
В C# или VB.Net, используя пакет Visual Studio, как я мог бы добавить разделительную строку к CommandBarPopup
меню?.
Я попробовал решение, данное @Carlos J. Quintero в этом вопросе:
Как вставить разделительную строку между несколькими командами надстроек в командной строке меню?
Используя этот код:
Private Sub AddSeparatorLine(ByRef cmndBarPopup As CommandBarPopup,
ByVal index As Integer)
Dim tempCommandBarButton As CommandBarButton =
DirectCast(cmndBarPopup.Controls.Add(MsoControlType.msoControlButton, Missing.Value, Missing.Value, index, True), CommandBarButton)
With tempCommandBarButton
.BeginGroup = True
.Visible = True
.Enabled = False
End With
End Sub
Тем не менее, он просто добавляет пробел (кнопка без имени), чтобы сделать разделитель, а не разделительная линия.
Это вид разделительной линии, которую я ожидаю:
Но вот что я получил:
2 ответа
Создание пользовательского интерфейса для пакетов совершенно отличается от создания его для надстроек. Для пакетов почти все делается в файле.vsct. Разделители строк разделяют группы, поэтому, если вам нужен разделитель строк, вам нужно объявить новую группу. См. Как создавать повторно используемые группы кнопок.
Вы должны определить символы, кнопки и группы в файле vsct, даже для контекстного меню. Я бы создал все возможные элементы и решил, какие из них включить / сделать видимыми во время выполнения. В качестве альтернативы вы можете использовать для этого флаг команды DynamicItemStart.
Я хотел бы посоветовать вам взглянуть на эту статью, которая довольно хорошо объясняет особенности работы с vspackages. Это на самом деле одна часть всей серии, которая мне очень помогла, когда мне понадобилась информация о vspackage, которую было трудно найти в другом месте. Посмотрите на раздел "Разделение групп команд в меню" для вашей проблемы.
ОБНОВИТЬ
Это руководство для Visual Studio 2013
VSDebug Сообщение
Данные меню:
Guid = {D309F791-903F-11D0-9EFC-00A0C911004F}
GuidID = 4
CmdID = 1037
Type = 0x00000400
Flags = 0x00000000
NameLoc = Code Window