меню в windows forms c
BestProg
Пример создания меню в C#. Элемент управления menuStrip
Содержание
Поиск на других ресурсах:
Условие задачи
Рис. 1. Меню, которое нужно создать
Выполнение
1. Запустить Microsoft Visual Studio. Создать проект по шаблону Windows Forms Application
Сохранить проект под произвольным именем.
2. Элемент управления MenuStrip
Рис. 2. Элемент управления MenuStrip
Рис. 3. Форма приложения после размещения компонента MenuStrip
Рис. 4. Типы элементов меню
Рис. 5. Создание подменю File
После создания всех элементов меню, форма приложения примет вид, как показано на рисунке 6.
Рис. 6. Форма приложения после создания меню
Следующими шагами есть программирование событий, связанных с выбором конкретного элемента меню.
Пошаговое руководство. Связывание стандартных элементов меню с формой
С помощью элемента управления MenuStrip можно создавать стандартные меню для форм.
В этом пошаговом руководстве показано, как использовать MenuStrip элемент управления для создания стандартного меню. Форма также реагирует, когда пользователь выбирает пункт меню. В этом пошаговом руководстве показаны следующие задачи:
Создание проекта Windows Forms.
Создание стандартного меню.
Создание StatusStrip элемента управления.
Обработка выбора пунктов меню.
По завершении у вас будет форма со стандартным меню, которое отображает элементы меню в StatusStrip элементе управления.
Чтобы скопировать код из этого раздела в виде одного списка, см. раздел как предоставить стандартные пункты меню в форме.
Необходимые компоненты
для выполнения этого пошагового руководства потребуется Visual Studio.
Создание проекта
в Visual Studio создайте проект Windows приложения с именем стандардменуформ (файл > New > Project > Visual C# или Visual Basic > классический рабочий стол > Windows Forms приложение).
в конструктор Windows Forms выберите форму.
Создание стандартного меню
конструктор Windows Forms может автоматически заполнять MenuStrip элемент управления стандартными элементами меню.
Перетащите элемент управления из области элементов на MenuStrip форму.
Щелкните MenuStrip глиф действий конструктора элементов управления ( ) и выберите Вставить стандартные элементы.
MenuStripЭлемент управления заполняется стандартными элементами меню.
Создание элемента управления StatusStrip
используйте StatusStrip элемент управления для просмотра состояния приложений Windows Forms. В текущем примере пункты меню, выбранные пользователем, отображаются в StatusStrip элементе управления.
Перетащите элемент управления из области элементов на StatusStrip форму.
StatusStripЭлемент управления автоматически закрепляется в нижней части формы.
Выбор элементов в обработке
Обработка DropDownItemClicked события для реагирования, когда пользователь выбирает пункт меню.
В окне Свойства выберите События.
Дважды щелкните DropDownItemClicked событие.
конструктор Windows Forms создает обработчик событий для DropDownItemClicked события.
Вставьте следующий код в обработчик событий.
Вставьте UpdateStatus определение служебного метода в форму.
Контрольная точка — тестирование формы
В меню файл выберите один из элементов, чтобы выбрать его.
StatusStripЭлемент управления отображает выбранный элемент.
Дальнейшие действия
В этом пошаговом руководстве вы создали форму со стандартным меню. ToolStripСемейство элементов управления можно использовать для многих других целей:
Создайте форму многодокументного интерфейса (MDI) с ToolStrip элементами управления закрепления. Дополнительные сведения см. в разделе Пошаговое руководство. Создание формы MDI с помощью слияния меню и элементов управления ToolStrip.
Придайте ToolStrip элементам управления профессиональный внешний вид. Дополнительные сведения см. в разделе как задать модуль подготовки отчетов ToolStrip для приложения.
Menu Класс
Определение
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет базовые возможности всех меню.
Примеры
Комментарии
Конструкторы
Инициализирует новый экземпляр класса Menu.
Указывает, что метод FindMenuItem(Int32, IntPtr) должен выполнять поиск дескриптора.
Указывает, что метод FindMenuItem(Int32, IntPtr) должен выполнять поиск ярлыка.
Свойства
Возвращает значение, показывающее, может ли компонент вызывать событие.
Возвращает объект IContainer, который содержит коллекцию Component.
Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время.
Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.
Получает значение, представляющее дескриптор окна для меню.
Получает значение, показывающее, содержит ли это меню какие-нибудь элементы меню. Это свойство доступно только для чтения.
Получает значение, указывающее объект MenuItem, используемый для отображения списка дочерних форм многодокументного интерфейса (MDI).
Получает значение, показывающее коллекцию объектов MenuItem, связанных с данным меню.
Возвращает или задает имя таблицы для объекта Menu.
Получает или задает ISite объекта Component.
Получает или задает определяемые пользователем данные, связанные с элементом управления.
Методы
Копирует объект Menu, передаваемый в качестве параметра в текущий объект Menu.
Создает новый дескриптор для объекта Menu.
Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.
Освобождает все ресурсы, занятые модулем Component.
Уничтожает ресурсы (кроме памяти), используемые классом Menu.
Определяет, равен ли указанный объект текущему объекту.
Получает объект MenuItem, содержащий указываемое значение.
Возвращает позицию меню, в которую должен быть вставлен элемент меню.
Получает объект ContextMenu, содержащий это меню.
Служит хэш-функцией по умолчанию.
Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.
Получает объект MainMenu, содержащий это меню.
Возвращает объект, представляющий службу, предоставляемую классом Component или классом Container.
Возвращает объект Type для текущего экземпляра.
Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.
Создает неполную копию текущего объекта Object.
Создает неполную копию текущего объекта MarshalByRefObject.
Объединяет объекты MenuItem одного меню с текущим меню.
Обрабатывает клавишу для команд.
Возвращает объект String, который представляет элемент управления Menu.
События
Возникает при удалении компонента путем вызова метода Dispose().
Элемент управления MenuStrip (Windows Forms)
Этот элемент управления группирует команды приложения и делает их легко доступными.
В этом разделе
Общие сведения об элементе управления MenuStrip
Описание элемента управления, его основных возможностей и свойств.
Практическое руководство. Дополнительные возможности объектов ToolStripMenuItem
Описывается, как добавить метки, изображения, сочетания клавиш, клавиши быстрого доступа и разделители к меню и командам меню.
Практическое руководство. Добавление элемента управления в родительское окно MDI-приложения
Описывается, как задать несколько свойств для добавления дочернего меню многодокументного интерфейса (MDI) к родительскому меню MDI.
Практическое руководство. Создание списка в окне интерфейса MDI с помощью MenuStrip
Показаны способы создания списка всех активных дочерних форм в меню родительского окна.
Практическое руководство. Отключение объектов ToolStripMenuItem
Описание способа отключения как всего меню, так и отдельных команд меню.
Практическое руководство. Скрытие объектов ToolStripMenuItem
Описание способа отключения как всего меню, так и отдельных команд меню.
Практическое руководство. Вставка элемента MenuStrip в раскрывающееся меню интерфейса MDI
Описывается, как задать несколько свойств, чтобы вставить группу пунктов меню из дочернего меню MDI в раскрывающийся список части родительского меню MDI.
Практическое руководство. Удаление элемента ToolStripMenuItem из меню MDI-приложения
Описывается, как задать несколько свойств, чтобы удалить группу элемент меню из раскрывающегося списка части родительского меню MDI.
Практическое руководство. Настройка полей флажков и значков для объекта MenuStrip
Описание настройки MenuStrip путем задания свойств полей флажков и значков различными способами.
Практическое руководство. Связывание с формой стандартных элементов меню
Описывается использование элемента управления MenuStrip для создания формы, содержащей стандартное меню.
Необходимые знания:
Целью данной части главы будет закрепление навыков работы с оконными приложениями. Мы рассмотрим на примере, как создаются элементы меню, панели инструментов, увидим, как создаются и вызываются дополнительные диалоговые окна, как работать с окнами выбора файлов. Также мы познакомимся еще с несколькими элементами управления и научимся динамически загружать изображения в форму.
Дайте название подэлементу меню File “Выход”, как показано на рисунке 4. После этого назовите еще один раздел меню – «загрузить». В меню загрузить добавьте подэлемент «загрузить изображение» и в раскрывающемся меню назначьте ему 2 подэлемента: «В формате JPG» и «В формате PNG». Выглядеть меню будет следующим образом (рис. 4):
Рисунок 4. Заполнение разделов создаваемого меню.
Теперь рассмотрим то, как просто добавить обработчик события меню. Для этого перейдите к меню «Выход». Теперь сделайте двойной щелчок левой клавишей мыши – MS Visual Studio автоматически создаст код функции обработчика и настроит событие обработки.
Перед нами откроется код функции обработчика:
Так как этот элемент меню отвечает за выход из приложения, добавим в него код, который будет генерировать MessageBox с вопросом о подтверждении выхода из приложения. Если пользователь подтвердит выход – приложение будет завершено.
Новый код функции с комментариями:
Теперь можно откомпилировать приложение и проверить работоспособность кнопки.
Часто панель управления (Toolbar) дублирует элементы меню для быстрого к ним доступа.
Таким образом, на панели разместятся 3 кнопки, как показано на рисунке 10.
Рисунок 10. Пример добавленных кнопок с установленными размерами.
Теперь назначим изображения для данных картинок. В качестве изображений можно использовать все современные форматы, в том числе и png24 с поддержкой прозрачности.
Мы будем использовать 3 следующих изображения:
Изображение для кнопки 1: будет назначено кнопке, отвечающей за открытие дополнительного диалогового окна.
Два следующих изображения будут назначены кнопкам, которые будут отвечать за загрузку файлов jpg и png.
Изображение для кнопки 2.
Изображение для кнопки 3.
(. ) Обратите внимание, что у данных изображений прозрачный фон.
2 кнопки будут дублировать меню с функциями загрузки изображений, 1-я кнопка будет предназначена для вызова окна, с отображением картинки, которую мы загрузили.
Теперь для установки изображений необходимо перейти в свойства картинки, после чего мы установим значение параметра ImageScaling равным none, чтобы изображение не масштабировалось. Теперь в параметре Image мы можем выбрать изображение для загрузки, как показано на рисунке 11.
Рисунок 11. Установка изображений на кнопки.
В процессе выбора откроется окно, показанное на рисунке 12.
Рисунок 12. Импорт рисунка для установки на кнопке.
Теперь щелкните на кнопке Import и выберите необходимый рисунок. Аналогично повторите с другими рисунками. В результате вы получите 3 красивые кнопки, как показано на рисунке 13.
Рисунок 13. Пример созданной панели инструментов.
Для того чтобы создать обработчики нажатий на кнопки этого ToolBox‘а, достаточно совершить двойной щелчок мыши на каждом из них – MS Visual Studio автоматически сгенерирует код обработчик события и заготовки функций.
В будущем мы добавим вызов необходимых нам функций из этого обработчика.
Теперь мы разместим на форме элемент PictureBox и настроим размеры окна, чтобы оно выглядело следующем образом (рис. 14).
Рисунок 14. Расположение элемента PictureBox в окне программы.
В свойствах добавленного элемента PictureBox установите параметр SizeMode, равный StretchImage. Теперь, когда мы реализуем загрузку изображения, оно будет масштабироваться под размеры нашего элемента PictureBox.
Чтобы пользователь мог выбирать файл для загрузки через стандартное в Windows окно загрузки файлов, мы выполним следующие действия.
Перейдите к окну ToolBox (Панель элементов).
Теперь перетащите элемент управления OpenFileDialog (рис. 15) на форму.
Рисунок 15. Добавление элемента OpenFileDialog.
Местоположение, куда вы перетащите элемент, неважно: он добавится в поле под окном, к другим специфическим объектам (рис. 16).
Рисунок 16. Элемент OpenFileDialog, расположенный под редактируемой формой.
Как видно из рисунка 16, к дополнительным элементам, уже установленным на наше окно (меню и ToolBox), добавился еще и элемент OpenFileDialog1.
Теперь мы реализуем код открытия окна выбора файла, с необходимыми нам параметрами.
Если вы еще не создали обработчики нажатия на кнопки загрузки и элементы меню, так же предназначенные для загрузки, сделайте это с помощью двойных щелчков по ним.
Код сгенерированных функций выглядит следующим образом:
Теперь напишем следующую функцию LoadImage.
Функция LoadImage в качестве входного параметра будет получать флаг о том, какой фильтр для выбора файлов необходимо выбрать. Далее вызывается окно выбора файла и если оно при закрытии возвращает результат DialogResult.OK, то мы пытаемся загрузить и установить выбранную картинку в поле PictureBox. Конструкция try catch необходима нам здесь по следующей причине: если загрузка прошла неудачно, то мы получим сообщение об ошибке, но на выполнение программы это не повлияет, и мы сможем продолжить ее выполнение.
Далее функции обработчики нажатий пунктов меню и кнопок на панели управления реализуют вызов функции загрузки с необходимым флагом.
Теперь, если откомпилировать приложение (F5), то можно попробовать загрузить изображение. Обратите внимание, что загрузка png24 с альфа-каналом тоже работает (рис. 17).
Рисунок 17. Пример загруженного изображения.
Как видите, наше изображение масштабируется под размер элемента PictureBox. Поэтому сейчас мы добавим в проект еще одну форму, на которой мы будем отображать изображение в его истинном размере.
Добавление и вызов дополнительного диалогового окна
Для этого перейдите к окну Solution Explorer (Обозреватель решений), после чего щелкните на названии проекта правой кнопкой мыши и в открывшемся контекстном меню выберите Add->Form, как показано на рисунке 18.
Рисунок 18. Добавление в проект нового диалогового окна.
В открывшемся окне введите названия класса, который будет отвечать за генерацию нашего вспомогательного окна – Preview.cs (рис. 19).
Рисунок 19. Установка названия создаваемой формы для нового диалогового окна.
Теперь измените размер окна так, как показано на рисунке 20. Затем на форме разместите элемент panel. Внутри элемента panel разместите элемент pictureBox, как показано на рисунке 20.
Рисунок 20. Размещение элементов panel и picturebox на созданном диалоговом окне.
Данное окно будет получать при загрузке в качестве параметра ссылку на наше загруженное изображение. Затем оно будет устанавливать границы элемента pictureBox равными размерам полученного изображения, после чего устанавливать его в элемент pictureBox.
Перейдите к свойствам элемента panel и установите значение параметра AutoScroll равное true. Теперь, в том случае, если размер изображения будет превышать размер элемента panel1, будут появляться вертикальная и горизонтальная полоса прокрутки, с помощью которых можно будет просмотреть изображение.
Теперь рассмотрим исходный код, необходимый для реализации данных возможностей.
Первым делом назначим обработчик кнопки с изображением стрелки направленной вправо на нашем главном окне. Щелкните по ней дважды, после чего вы перейдете к редактированию кода функции, которая будет вызвана при щелчке по данной кнопке.
Он будет выглядеть следующим образом:
Как видно из исходного кода, класс Preview получает в качестве параметра наше загруженное изображение. Для правильной работы программы мы должны изменить конструктор класса Preview, а также реализовать остальную функциональность программы.
Перейдите к окну Preview, после чего сделайте двойной щелчок левой клавшей мыши на нем (НЕ на размещенных на нем объектах).
Откроется для редактирования функция:
Но мы сначала изменим код конструктора класса, теперь он будет выглядеть следующим образом:
Теперь отредактируем код функции Preview_Load. Он будет выглядеть следующим образом:
В заключении, самостоятельно добавьте обработчик нажатия кнопки закрыть. Функция закрытия будет выглядеть следующим образом:
Вот и все. Теперь, если будет загружено большое изображение, его отображение в дополнительном окне будет снабжено полосами прокрутки (рис. 21).
Рисунок 21. Изображение с полосами прокрутки.
Откомпилируйте приложение (F5), чтобы проверить его.
В следующей главе мы познакомимся с методами создания многопоточных приложений на примере разработки двух приложений.