Высокоуровневые методы информатики и программирования Лекция 23 Графический интерфейс форм План работы 1. Основные элементы интерфейса окна программы. 2. Меню 3. Инструментальные полосы. 4. Полосы состояния. Типы окон программы • Приложение (прикладная программа application) включает набор окон (Form) • Типы окон – Основное окно – Диалоги • Стандартные • Специальные Элементы интерфейса основного окна • Основные элементы интерфейса формы приложения: – Меню – иерархически организованный набор команд, которые может выполнить приложение. – Инструментальные полосы – наборы графических элементов (иконок), которые позволяют выполнить команды приложения (дублируют пункты меню). – Полоса состояния – набор ЭУ для отображения хода выполнения приложением различных задач. Пример размещения элементы управления программы Примеры элементов MenuStrip Множество элементов ToolStrip • Предоставляют общие возможности для создания интерфейса пользователя в Windows Form – – – – – ToolStrip, MenuStrip, ContextMenuStrip, StatusStrip, ToolStripDropDown • Они предоставляют множество возможностей во время проектирования (Design mode) и во время выполнения (Run-time mode). Иерархия ToolStrip классов Класс ToolStripItem • ToolStripItem это абстрактный базовый класс для всех элементов, которые могут размещаться в ToolStrip. • Класс ToolStrip управляет рисованием, работой с клавиатурой и мышью этих элементов. • Класс ToolStripItem управляет событиями и размещением элементов. Иерархия ToolStripItem классов Классы меню Базовый класс Базовый класс ToolStrip ToolStripItem Основное меню Контекстное меню MenuStrip ContextMenuStrip Строка состояния StatusStrip Пункт меню ToolStripMenuItem Класс MenuStrip имеeт свойство Items – коллекция элементов класса ToolStripMenuItem Класс ToolStripMenuItem имеeт свойство DropDownItems – коллекция элементов класса ToolStripMenuItem Работа с меню Меню Один из основных интерфейсов программы. Разные виды меню в программе: • Главное меню – MenuStrip • Контекстное меню – ContextMenuStrip У формы есть свойства • MainMenuStrip – нужно присвоить ссылку на объект класса MenuStrip • ContextMenuStrip – нужно присвоить ссылку на объект класса ContextMenuStrip Пример меню VB программа с меню Файл Справка Новый Выход MenuStrip Новый Подменю Выход ContextMenuStrip ToolStripMenuItem: Файл, Справка, Новый, Выход – связаны с обработчиками событий Click Структура меню MainMenuStrip MenuStrip Items ToolStripMenuItem DropDownItems Form DropDownItems Items Items ToolStripMenuItem ToolStripMenuItem ToolStripMenuItem ToolStripMenuItem Класс MenuStrip • Для показа на форме ссылка на объект MenuStrip должна быть присвоена свойству формы MainMenuStrip • Свойство Items() - коллекция пунктов меню: – ToolStripMenuItem – ToolStripComboBox – ToolStripTextBox – ToolStripSeparator Класс пунктов меню ToolStripMenuItem • Свойства – – – – – Text – название пункта меню DropDownItems() – коллекция пунктов меню Checked – ставить ли метку у этого пункта Enabled – активный ли пункт меню Shortcut – горячие клавиши для вызова • События – Click (при щелчке по пункту меню) – Popup (перед показом данного пункта меню) – Select (курсор находится над пунктом меню) Задание обработчика пункта меню Создание нового пункта с заданным названием и обработчиком события Click. ToolStripMenuItem miClose = new ToolStripMenuItem() miClose.Text = "Close“; miClose.Close += new EventHandler(CloseOnClick)) ... public void CloseOnClick(object o, EventArgs e) { frm.Close(); } Задние пунктов подменю • Подменю – массив пунктов меню. • Создание нового пункта с заданным названием и массивом пунктов подменю (подменю). Пример: создание пункта меню “File”, который показывает подменю с двумя пунктами (“New”, “Close”) MenuStripItem miFile = new MenuStripItem( ); miFile.Text = “File“; // добавляем по пунктам miFile.DropDownItems.Add(miNew); miFile.DropDownItems.Add(miClose); // или создаем и инициализируем массив пунктов меню miFile.DropDownItems.AddRange (new MenuStripItem[ ] {miNew, miClose} ); Контекстное меню (ContextMenuStrip) • Появляется при нажатии правой клавиши на поверхности формы появится контекстное меню. • Элемент класса ContextMenuStrip должен быть присвоен свойству формы Form.ContextMenuStrip • Запомнить: при работе в режиме Design созданное контекстное меню автоматически свойству формы не присваивается. Надо вручную свойству формы ContextMenuStrip задать ссылку на созданное контекстное меню. Пример контекстного меню элемента TextBox Создание контекстного меню 1. Создать элемент класса ContextMenuStrip 2. Задать пункты меню – элементы ToolStripMenuItem 3. Задать обработчики событий для пунктов меню 4. Присвоить ссылку на созданный объект ContextMenuStrip свойству формы ContextMenuStrip (в окне Properties для формы) Инструментальная полоса – класс ToolStrip • Предназначена для размещения ЭУ, которые вызывают некоторые действия программы. • Обычно инструментальная полоса содержит ЭУ для быстрого выполнения команд меню. Основные свойства класс ToolStrip • Items – коллекция ЭУ, включенных в инструментальную полосу; • Dock – прикрепление инструментальной полосы к краям формы; • RenderMode – способ отрисовки инструментальной полосы. Примеры элементов ToolStripItem Примеры элементов ToolStripItem ЭУ для размещения в ToolStrip • • • • • • • • ToolStripButton ToolStripSplitButton ToolStripLabel ToolStripDropDownButton ToolStripTextBox ToolStripProgressBar ToolStripComboBox ToolStripSeparator Класс StatusStrip • Строка состояния показывает сообщения о ходе работы программы • Для добавления к форме нужно создать экземпляр класса StatusStrip (вручную или с помощью дизайнера). • В добавленный объект могут быть вставлены объекты разных типов (ToolStripStatusLabel, ToolStripProgressBar и др.). Типы интерфейсов Типы интерфейсов приложений • SDI – single document interface • MDI – multiple document interface Типы интерфейсов приложений • SDI – single document interface • MDI – multiple document interface – Parent Form – контейнер для Child form • свойство IsMDIContainer = True – Child Form – дочернее окно, создается в клиентской области Родительского окна • свойство MdiParent = <ссылка на MDI Parent> SDI интерфейс MDI интерфейс Пример MDI интерсейса Создание MDI интерфейса • В родительской форме (parent form – контейнер для Child form) задается свойство: IsMDIContainer = True • В дочерней форме (child form – дочернее окно, создается в клиентской области Родительского окна) задается свойство: MdiParent = <ссылка на MDI Parent> Создание дочернего окна рrivate void mnuProd_Click(object o, EventArgs) { static int intCount; intCount ++; frmProducts frm = new frmProducts(); frm.MdiParent = this; frm.Text = frm.Text + " " + intCount.ToString(); frm.Show(); } Меню в MDI • Дочернее окно может иметь свое меню; • При работе с дочерним окном, меню родительского и дочернего окна объединяются (merged) • Каждый MenuItem имеют свойства MergeOrder и MergeType. • Свойство MergeOrder задает относительной позицией menu item при слиянии с родительским меню. По умолчанию значение 0, указывает, что menu item будет добавлено в конец существующих menu items. • Свойство MergeType задает, поведение menu item, если относительные позиции элементов меню при объединении совпадают. – Add – добавление к уже имеющимся элементам (по умолчанию) – MergeItems – подэлементы данного элемента объединяются с совпавшим элементом родительского меню; – Remove – элемент не добавляется – Replace – элемент заменяет элемент родительского меню. рrivate void mnuCascade_Click( Object o, EventArgs e) { this.LayoutMdi(MdiLayout.Cascade) } ActiveMdiChild – ссылка на активное дочернее окно.