Высокоуровневые методы информатики и программирования Лекция 23 Графический интерфейс форм
План работы 1.Основные элементы интерфейса окна программы. 2.Меню 3.Инструментальные полосы. 4.Полосы состояния.
Типы окон программы Приложение (прикладная программа - application) включает набор окон (Form) Типы окон –Основное окно –Диалоги Стандартные Специальные
Элементы интерфейса основного окна Основные элементы интерфейса формы приложения: –Меню – иерархически организованный набор команд, которые может выполнить приложение. –Инструментальные полосы – наборы графических элементов (иконок), которые позволяют выполнить команды приложения (дублируют пункты меню). –Полоса состояния – набор ЭУ для отображения хода выполнения приложением различных задач.
Пример размещения элементы управления программы
Примеры элементов MenuStrip
Множество элементов ToolStrip Предоставляют общие возможности для создания интерфейса пользователя в Windows Form –ToolStrip, –MenuStrip, –ContextMenuStrip, –StatusStrip, –ToolStripDropDown Они предоставляют множество возможностей во время проектирования (Design mode) и во время выполнения (Run-time mode).
Иерархия ToolStrip классов
ToolStrip MenuStripStatusStrip ToolStripDropDown ToolStripDropDownMenuContextMenuStrip
Класс ToolStripItem ToolStripItem это абстрактный базовый класс для всех элементов, которые могут размещаться в ToolStrip. Класс ToolStrip управляет рисованием, работой с клавиатурой и мышью этих элементов. Класс ToolStripItem управляет событиями и размещением элементов.
Иерархия ToolStripItem классов
ToolStripItem ToolStripButton ToolStripSeparator ToolStripLabel ToolStripControlHost ToolStripSeparator ToolStripDropDownItem (абстрактный класс) ToolStripStatusLabel ToolStripTextBox ToolStripComboBox ToolStripTextBox ToolStripMenuItem ToolStripSplitButton ToolStripDropDow nButton
Классы меню Базовый класс ToolStrip Основное меню MenuStrip Контекстное меню ContextMenuStrip Пункт меню ToolStripMenuItem Класс MenuStrip имеeт свойство Items – коллекция элементов класса ToolStripMenuItem Базовый класс ToolStripItem Класс ToolStripMenuItem имеeт свойство DropDownItems – коллекция элементов класса ToolStripMenuItem Строка состояния StatusStrip
Работа с меню
Меню Один из основных интерфейсов программы. Разные виды меню в программе: Главное меню – MenuStrip Контекстное меню – ContextMenuStrip У формы есть свойства MainMenuStrip – нужно присвоить ссылку на объект класса MenuStrip ContextMenuStrip – нужно присвоить ссылку на объект класса ContextMenuStrip
Пример меню Файл Справка Новый Добавить фигуру Выход Квадрат Круг Эллипс MenuStrip ToolStrip Menu Item : Файл, Справка, Новый, Добавить фигуру, Выход, Квадрат, Круг, Эллипс Круг C# программа с меню Квадрат Круг Эллипс ContextMenuStrip
Пример меню Файл Справка Новый Выход MenuStrip ToolStrip Menu Item : Файл, Справка, Новый, Выход – связаны с обработчиками событий Click VB программа с меню Новый Выход ContextMenuStrip Подменю
Структура меню MenuStrip ToolStripMenuItem MainMenuStrip Form Items DropDownItems Items
Класс MenuStrip Для показа на форме ссылка на объект MenuStrip должна быть присвоена свойству формы MainMenuStrip Свойство Items() - коллекция пунктов меню: –ToolStripMenuItem –ToolStripComboBox –ToolStripTextBox –ToolStripSeparator
Класс пунктов меню ToolStripMenuItem Свойства –Text – название пункта меню –DropDownItems() – коллекция пунктов меню –Checked – ставить ли метку у этого пункта –Enabled – активный ли пункт меню –Shortcut – горячие клавиши для вызова События –Click (при щелчке по пункту меню) –Popup (перед показом данного пункта меню) –Select (курсор находится над пунктом меню)
Задание обработчика пункта меню Создание нового пункта с заданным названием и обработчиком события Click.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
ЭУ для размещения в ToolStrip ToolStripButton ToolStripSplitButton ToolStripLabel ToolStripDropDownButton ToolStripTextBox ToolStripProgressBar ToolStripComboBox ToolStripSeparator
Контейнеры для ЭУ ToolStrip ToolStripPanel – ЭУ, который может включать несколько ЭУ ToolStrip. ToolStripContainer – ЭУ, который включает четыре ЭУ ToolStripPanel
Класс 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 =
SDI интерфейс
MDI интерфейс
Пример MDI интерсейса
Создание MDI интерфейса В родительской форме (parent form – контейнер для Child form) задается свойство: IsMDIContainer = True В дочерней форме (child form – дочернее окно, создается в клиентской области Родительского окна) задается свойство: MdiParent =
Создание дочернего окна р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 – ссылка на активное дочернее окно.