ContextMenuStrip

advertisement
Высокоуровневые методы
информатики и
программирования
Лекция 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 – ссылка на активное дочернее окно.
Download