Visual studio верхнее меню
в отличие от Microsoft Office, которая состоит из множества отдельных продуктов, Visual Studio содержит множество продуктов, которые каждый из них вносит в свои наборы команд в глобальной интегрированной среде разработки Visual Studio. Интегрированная среда разработки управляет сложными тысячами команд путем фильтрации функциональных возможностей, доступных пользователю в зависимости от контекста.
При изменении контекста пользователя, например при переключении из окна конструктора в окно редактирования кода, функции, не связанные с новым контекстом, исчезают. В то же время новые функциональные возможности помещаются вместе со связанными динамическими сведениями, такими как свойства и параметры панели элементов. Пользователь не должен заметить замену набора доступных команд. Если пользователь отвлекается от команды, которые появляются или отменяют, то для разработки пользовательского интерфейса требуется корректировка. Текущий контекст пользователя всегда указывается одним или несколькими способами, например в заголовке окна интегрированной среды разработки, в окно свойств или в диалоговом окне страницы свойств.
Панели команд обеспечивают гибкость в пользовательском интерфейсе. единственная структура команд, присущая среде Visual Studio, является главным меню и основной панелью команд, которая может быть настроена и даже скрыта. Другие панели команд отображаются и исчезают в зависимости от состояния приложения. Окна инструментов и редакторы документов также могут содержать встроенные панели инструментов в границах окна.
Основные рекомендации
При возможности используйте существующие общие команды, группы команд и меню.
Поскольку команды обычно отображаются на основе контекста, использование существующих общих меню и групп команд гарантирует, что структура команд остается относительно стабильной между изменениями в контексте. Повторное использование общих команд и размещение новых команд, близких к связанным общим командам, приводит к снижению сложности интегрированной среды разработки и созданию более понятного интерфейса пользователя. Если необходимо определить новую команду, попытайтесь поместить ее в существующую общую группу команд. Если необходимо определить новую группу, поместите ее в существующее общее меню, близкое к связанной группе команд, перед созданием нового меню верхнего уровня.
Не создавайте значки для каждой команды.
Прежде чем создавать значок команды, подумайте внимательно. Значки должны создаваться только для команд, которые:
отображается на панели инструментов по умолчанию.
, скорее всего, будут добавляться пользователями на панель инструментов с помощью диалогового окна Настройка. .
наличие значка, связанного с тем же действием в другом продукте Майкрософт.
Ограничить Добавление сочетаний клавиш
Подавляющее большинство пользователей использует небольшую часть всех доступных сочетаний клавиш. Если вы сомневаетесь, не привяжите функцию к сочетанию клавиш. Перед добавлением новых ярлыков обратитесь к группе взаимодействия с пользователем.
Присвойте командам размещение меню по умолчанию.
Имейте в виду, что команды будут настраиваться другими пользователями и разрабатывать их соответствующим образом. Нет ничего вроде скрытой команды. все Visual Studio команды отображаются в диалоговом окне сервис > настройка , командное окно, автозавершение, средства > параметры > клавиатура и среда средств разработки (DTE). Обязательно присвойте командам имя и подсказку в файле. CTC, чтобы пользователи могли легко находить их.
Не повторяйте общие команды на внедренной панели инструментов.
Удобно размещать команды в близком к области фокусе пользователя. Одним из способов сделать это является создание встроенной панели инструментов в верхней части окна инструментов или редактора документов. Команды, размещенные на панели инструментов, должны быть специфичны для области содержимого в пределах окна. Не повторяйте общие команды на этих панелях инструментов. Например, никогда не размещайте значок "Сохранить" во встроенной панели инструментов.
Видимость содержимого и команд
Команды существуют в следующих областях: Среда, Иерархия и документ. Чтобы иметь уверенность в размещении команд, необходимо иметь представление о каждой области.
Команды в области среды устанавливают основной контекст и совместно используются несколькими контекстами. Они изменяют видимость или расположение документов и окон инструментов. к командам в области среды относятся новые Project, Подключение к серверу, присоединить процессы, вырезать, копировать, вставить, найти, параметры, настроить, создать окно и просмотреть справку.
команды в области иерархии управляют иерархиями в Visual Studio включая Project, команды и данные. Они связаны с подконтекстом проекта, например Отладка, Сборка, тестирование, архитектура или анализ. между командами в области иерархии: добавить новый элемент, новый запрос, Project Параметры, добавить новый источник данных, запустить мастер производительности и создать диаграмму.
Команды в области документа ведут себя над содержимым документа, например кодом, конструкцией или запросом рабочего элемента (WIQ). Они также работают с представлением окна инструментов или в других случаях для этого окна инструментов. Команды области документа также работают с объектами файлов, которые сами являются специфичными для иерархии, например для удаления из Project. Между командами в области документа выполняется рефакторинг > переименование, Создание копии рабочего элемента, Развернуть все, Свернуть все и создать задачу пользователя.
Принятие решений о размещении команд
После того как вы решили создать команду, необходимо определить ее расположение и создать сочетание клавиш. Следуйте этому пути принятия решений, чтобы определить место размещения команды:
Путь принятия решений для размещения команд в Visual Studio
Размещение команд в меню
Строка главного меню
Главная строка меню должна быть стандартным расположением для команд любого контекстного меню, предназначенного для конкретного контекста, которые вносят вклад в пользовательский интерфейс. Главная строка меню отличается от других структур команд в том, что среда использует ее для управления видимыми командами. Все остальные панели команд просто отключают команды, находящиеся вне контекста, независимо от того, размещены ли они в меню или на панели инструментов.
Среда определяет набор команд, встроенных в главную строку меню, которые являются общими для всей среды IDE и нескольких доменов задач. Эти команды всегда видны независимо от того, какие пакеты VSPackage загружены в среду. Несмотря на то, что пакеты VSPackage могут расширять этот набор команд, каждая команда отвечает за набор команд из каждого продукта и размещение их команд.
структуру главного меню Visual Studio можно разделить на следующие категории меню:
Для создания меню в Windows Forms применяется элемент MenuStrip . Данный класс унаследован от ToolStrip и поэтому наследует его функциональность.
Наиболее важные свойства компонента MenuStrip:
Dock : прикрепляет меню к одной из сторон формы
LayoutStyle : задает ориентацию панели меню на форме. Может также, как и с ToolStrip, принимать следующие значения
HorizontalStackWithOverflow : расположение по горизонтали с переполнением - если длина меню превышает длину контейнера, то новые элементы, выходящие за границы контейнера, не отображаются, то есть панель переполняется элементами
StackWithOverflow : элементы располагаются автоматически с переполнением
VerticalStackWithOverflow : элементы располагаются вертикально с переполнением
Flow : элементы размещаются автоматически, но без переполнения - если длина панели меню меньше длины контейнера, то выходящие за границы элементы переносятся
Table : элементы позиционируются в виде таблицы
ShowItemToolTips : указывает, будут ли отображаться всплывающие подсказки для отдельных элементов меню
Stretch : позволяет растянуть панель по всей длине контейнера
TextDirection : задает направление текста в пунктах меню
MenuStrip выступает своего рода контейнером для отдельных пунктов меню, которые представлены объектом ToolStripMenuItem .
Добавить новые элементы в меню можно в режиме дизайнера:
Для добавления доступно три вида элементов: MenuItem (объект ToolStripMenuItem), ComboBox и TextBox . Таким образом, в меню мы можем использовать выпадающие списки и текстовые поля, однако, как правило, эти элементы применяются в основном на панели инструментов. Меню же обычно содержит набор объектов ToolStripMenuItem.
ToolStripMenuItem в конструкторе принимает текстовую метку, которая будет использоваться в качестве текста меню. Каждый подобный объект имеет коллекцию DropDownItems , которая хранит дочерние объекты ToolStripMenuItem. То есть один элемент ToolStripMenuItem может содержать набор других объектов ToolStripMenuItem. И таким образом, образуется иерархическое меню или структура в виде дерева.
Если передать при добавление строку текста, то для нее неявным образом будет создан объект ToolStripMenuItem: fileItem.DropDownItems.Add("Создать")
Назначив обработчики для события Click , мы можем обработать нажатия на пункты меню: aboutItem.Click += aboutItem_Click
Отметки пунктов меню
Свойство CheckOnClick при значении true позволяет на клику отметить пункт меню. А с помощью свойства Checked можно установить, будет ли пункт меню отмечен при запуске программы.
Еще одно свойство CheckState возвращает состояние пункта меню - отмечен он или нет. Оно может принимать три значения: Checked (отмечен), Unchecked (неотмечен) и Indeterminate (в неопределенном состоянии)
Например, создадим ряд отмеченных пунктов меню и обработаем событие установки / снятия отметки:
Клавиши быстрого доступа
Если нам надо быстро обратиться к какому-то пункту меню, то мы можем использовать клавиши быстрого доступа. Для задания клавиш быстрого доступа используется свойство ShortcutKeys :
Клавиши задаются с помощью перечисления Keys . В данном случае по нажатию на комбинацию клавиш Ctrl + P, будет срабатывать нажатие на пункт меню "Сохранить".
С помощью изображений мы можем разнообразить внешний вид пунктов меню. Для этого мы можем использовать следующие свойства:
DisplayStyle : определяет, будет ли отображаться на элементе текст, или изображение, или и то и другое.
Image : указывает на само изображение
ImageAlign : устанавливает выравнивание изображения относительно элемента
ImageScaling : указывает, будет ли изображение растягиваться, чтобы заполнить все пространство элемента
ImageTransparentColor : указывает, будет ли цвет изображения прозрачным
Если изображение для пункта меню устанавливает в режиме дизайнера, то нам надо выбрать в окне свойство пункт Image, после чего откроется окно для импорта ресурса изображения в проект
Чтобы указать, как разместить изображение, у свойства DisplayStyle надо установить значение Image . Если мы хотим, чтобы кнопка отображала только текст, то надо указать значение Text , либо можно комбинировать два значения с помощью другого значения ImageAndText . По умолчанию изображение размещается слева от текста:
Элемент ToolStrip представляет панель инструментов. Каждый отдельный элемент на этой панели является объектом ToolStripItem .
Ключевые свойства компонента ToolStrip связаны с его позиционированием на форме:
Dock : прикрепляет панель инструментов к одной из сторон формы
LayoutStyle : задает ориентацию панели на форме (горизонтальная, вертикальная, табличная)
ShowItemToolTips : указывает, будут ли отображаться всплывающие подсказки для отдельных элементов панели инструментов
Stretch : позволяет растянуть панель по всей длине контейнера
В зависимости от значения свойства LayoutStyle панель инструментов может располагаться по горизонтали, или в табличном виде:
HorizontalStackWithOverflow : расположение по горизонтали с переполнением - если длина панели превышает длину контейнера, то новые элементы, выходящие за границы контейнера, не отображаются, то есть панель переполняется элементами
StackWithOverflow : элементы располагаются автоматически с переполнением
VerticalStackWithOverflow : элементы располагаются вертикально с переполнением
Flow : элементы располагаются автоматически, но без переполнения - если длина панели меньше длины контейнера, то выходящие за границы элементы переносятся, а панель инструментов растягивается, чтобы вместить все элементы
Table : элементы позиционируются в виде таблицы
Если LayoutStyle имеет значения HorizontalStackWithOverflow / VerticalStackWithOverflow , то с помощью свойства CanOverflow мы можем задать поведение при переполнении. Так, если это свойство равно true (значение по умолчанию), то для элементов, не попадающих в границы ToolStrip, создается выпадающий список:
При значении false подобный выпадающий список не создается.
Типы элементов панели и их добавление
Панель ToolStrip может содержать объекты следующих классов
ToolStripLabel : текстовая метка на панели инструментов, представляет функциональность элементов Label и LinkLabel
ToolStripButton : аналогичен элементу Button.Также имеет событие Click, с помощью которого можно обработать нажатие пользователя на кнопку
ToolStripSeparator : визуальный разделитель между другими элементами на панели инструментов
ToolStripToolStripComboBox : подобен стандартному элементу ComboBox
ToolStripTextBox : аналогичен текстовому полю TextBox
ToolStripProgressBar : индикатор прогресса, как и элемент ProgressBar
ToolStripDropDownButton : представляет кнопку, по нажатию на которую открывается выпадающее меню
К каждому элементу выпадающего меню дополнительно можно прикрепить обработчик нажатия и обработать клик по этим пунктам меню
ToolStripSplitButton : объединяет функциональность ToolStripDropDownButton и ToolStripButton
Добавить новые элементы можно в режиме дизайнера:
Также можно добавлять новые элементы программно в коде. Их расположение на панели инструментов будет соответствовать порядку добавления. Все элементы хранятся в ToolStrip в свойстве Items. Мы можем добавить в него любой объект класса ToolStripItem (то есть любой из выше перечисленных классов, так как они наследуются от ToolStripItem):
Кроме того, здесь задается обработчик, позволяющий обрабатывать нажатия по кнопки на панели инструментов.
Элементы ToolStripButton, ToolStripDropDownButton и ToolStripSplitButton могут отображать как текст, так и изобажения, оибо сразу и то, и другое. Для управления размещением изображений в этих элементах имеются следующие свойства:
DisplayStyle : определяет, будет ли отображаться на элементе текст, или изображение, или и то и другое.
Image : указывает на само изображение
ImageAlign : устанавливает выравнивание изображения относительно элемента
ImageScaling : указывает, будет ли изображение растягиваться, чтобы заполнить все пространство элемента
ImageTransparentColor : указывает, будет ли цвет изображения прозрачным
Чтобы указать разместить изображение на кнопке, у свойства DisplayStyle надо установить значение Image . Если мы хотим, чтобы кнопка отображала только текст, то надо указать значение Text , либо можно комбинировать два значения с помощью другого значения ImageAndText :
С помощью элемента управления MenuStrip можно создавать стандартные меню для форм.
В этом пошаговом руководстве демонстрируется использование элемента управления MenuStrip для создания стандартного меню. Форма также реагирует, когда пользователь выбирает пункт меню. В данном пошаговом руководстве рассмотрены следующие задачи.
Создание проекта Windows Forms.
Создание стандартного меню.
Создание элемента управления StatusStrip.
Обработка выбора пункта меню.
По завершении этого руководства у вас будет форма со стандартным меню, которое отображает выбранные пункты меню в элементе управления StatusStrip.
Весь код из этого раздела в виде листинга для копирования см. в разделе Практическое руководство. Связывание с формой стандартных элементов меню.
Предварительные требования
Для выполнения шагов, описанных в этом руководстве, вам понадобится Visual Studio.
Создание проекта
Выберите форму в конструкторе Windows Forms.
Создание стандартного меню
Конструктор Windows Forms может автоматически заполнить элемент управления MenuStrip стандартными пунктами меню.
Перетащите элемент управления MenuStrip из панели элементов в вашу форму.
Щелкните глиф действий в конструкторе элемента управления MenuStrip () и выберите Вставить стандартные элементы.
Элемент управления MenuStrip заполняется стандартными пунктами меню.
Щелкните пункт меню Файл, чтобы просмотреть его пункты меню по умолчанию и соответствующие значки.
Создание элемента управления StatusStrip
Используйте элемент управления StatusStrip для отображения состояния в ваших приложениях Windows Forms. В текущем примере в элементе управления StatusStrip отображаются пункты меню, выбранные пользователем.
Перетащите элемент управления StatusStrip из панели элементов в вашу форму.
Элемент управления StatusStrip автоматически закрепляется внизу формы.
Обработка выбора пункта меню
Чтобы обеспечить реакцию на выбор пользователем пункта меню, необходимо обрабатывать событие DropDownItemClicked.
Щелкните пункт меню Файл, который вы создали в разделе "Создание стандартного меню".
В окне Свойства выберите События.
Конструктор Windows Forms создает обработчик событий для события DropDownItemClicked.
Вставьте в обработчик событий следующий код.
Вставьте в форму определение служебного метода UpdateStatus .
Контрольная точка — проверка формы
Нажмите клавишу F5, чтобы скомпилировать и запустить форму.
Щелкните пункт меню Файл, чтобы открыть меню.
В меню Файл щелкните один из пунктов, чтобы выбрать его.
В элементе управления StatusStrip появится выбранный элемент.
Следующие шаги
В этом пошаговом руководстве вы создали форму со стандартным меню. Семейство ToolStrip элементов управления можно также использовать для других целей.
Создание контекстных меню для элементов управления с помощью ContextMenuStrip. Дополнительные сведения см. в разделе Общие сведения о компоненте ContextMenu.
Придание элементам управления ToolStrip профессионального внешнего вида. Дополнительные сведения см. в разделе Практическое руководство. Настройка отрисовщика ToolStrip для приложения.
Создать приложение типа Windows Forms Application . На форме приложения создать меню по образцу, как показано на рисунке 1.
Рис. 1. Меню, которое нужно создать
Выполнение
1. Запустить Microsoft Visual Studio. Создать проект по шаблону Windows Forms Application
Подробный пример создания проекта по шаблону Windows Forms Application описывается здесь .
Сохранить проект под произвольным именем.
2. Элемент управления MenuStrip
Для создания меню используется элемент управления MenuStrip . Он размещается на панели Toolbox во вкладке « Menus&Toolbars » (рис. 2).
Рис. 2. Элемент управления MenuStrip
После вынесения компонента на форму (с помощью мышки) форма приложения примет вид, как показано на рисунке 3. В нижней части окна проектирования формы размещается объект с именем menuStrip1 . С помощью этого имени можно иметь доступ к свойствам и методам меню.
Рис. 3. Форма приложения после размещения компонента MenuStrip
Если навести курсор мыши на элемент меню TypeHere , то появится кнопка вызова всплывающего меню. Если раскрыть всплывающее меню (клик мышкой), то откроется возможность выбора одного из трех видов элементов управления в меню (рис. 4):
- MenuItem – стандартный элемент меню;
- ComboBox – элемент меню типа «нисходящий список»;
- TextBox – элемент меню типа «поле ввода».
В нашем случае выбираем первый вариант MenuItem .
Рис. 4. Типы элементов меню
Для создания подменю File достаточно набрать текст « File » (рис. 5). С помощью мышки и клавиатуры, можно добавлять элементы меню. Для удаления элемента меню, его предварительно нужно выделить мышкой и нажать клавишу Delete .
Рис. 5. Создание подменю File
После создания всех элементов меню, форма приложения примет вид, как показано на рисунке 6.
Рис. 6. Форма приложения после создания меню
Следующими шагами есть программирование событий, связанных с выбором конкретного элемента меню.
Читайте также: