- •Тверской государственный технический университет
- •Меню и панели управления Windows-приложений
- •Содержание:
- •1. Теоретическая часть
- •1.1. Управляющий элемент Menu
- •1.2. Дополнительные возможности элемента управления MenuStrip.
- •1.3. Средство управления Menultem
- •1.6. Создание контекстного меню в режиме проектирования
- •1.4. События управляющего элемента Menultem
- •1.5. Контекстное меню (ContextMenu).
- •2. Работа с панелями управления.
- •2.1. Панель управления с использованием компоненты Panel.
- •2.2. Панель управления с использованием компоненты ToolStrip.
- •3. Задание на лабораторную работу.
- •4. Отчет по лабораторной работе должен содержать:
1.4. События управляющего элемента Menultem
На первый взгляд, вероятно, что вполне достаточно одного — события click. На самом деле, существует пять событий, на которые может управляющий элемент Menultem реагировать. Причем, два из них следует использовать только в тех случаях, когда вы формируете пункты самостоятельно. В таблице 2 даны описания этих событий.
Таблица 2.
Имя |
Описание |
Click |
Наступает, когда пользователь щелкает мышью на пункте меню. Это событие можно также сгенерировать искусственно, обратившись к методу PerformClickO, имеющемуся в Menuitem. |
DrawItem |
Возникает, когда пункт меню должен быть выведен. Если свойству OwnerDraw присвоено значение t r u e , то это событие необходимо обрабатывать. |
MesureItem |
Возникает перед тем, как Menuitem начинает рисоваться. Если вы рисуете Menuitem самостоятельно, то вам необходимо вычислить и вернуть ширину и высоту пункта, вызвавшего наступление события. |
Popup |
Возникает в момент вывода списка подпунктов данного Menuitem. Это событие может использоваться для проверки доступности пунктов меню и соответствующего задания их состояния. |
Select |
Наступает, когда пользователь перемещает курсор мыши на данный пункт или когда он перемещает фокус с помощью клавиатуры. |
1.5. Контекстное меню (ContextMenu).
Контекстное
меню — это меню, которое открывается,
когда пользователь щелкает правой
кнопкой мыши на каком-либо объекте,
расположенном в форме. Контекстное
меню, изображенное на рисунке слева,
представляет собой меню, которое автор
получил, щелкнув правой кнопкой мыши
на рабочем столе своего компьютера.
Создать контекстное меню можно посредством
переноса такого меню в форму и добавления
к нему необходимых пунктов — точно так
же, как это может быть сделано с управляющим
элементом MainMenu. Единственное отличие
заключается в том, что в контекстном
меню не допускается наличие пунктов
самого верхнего уровня.
Рис.6. Возможные действия при создании контекстного меню.
Для того чтобы привязать контекстное меню к какому-либо управляющему элементу в форме, следует выбрать соответствующий управляющий элемент и присвоить его свойству contextMenu указатель на созданное вами контекстное меню.
В
результате этих действий главное окно
Visual Studio
примет вид, показанный на Рис.7.
Рис.7. Результат действий по созданию контекстного меню.
1.6. Создание контекстного меню в режиме проектирования
Контекстное меню, дублирующее некоторые действия основного меню, является самым привычным для пользователя, но не самым быстрым способом работы с программой. Например, элемент управления RichTextBox, размещенный на форме, может содержать в себе простейшее контекстное меню, дублирующее действия подменю Edit. Для того чтобы убедиться в этом, достаточно разместить этот элемент управления на форму и запустить приложение (Рис.8):
Рис.8. Контекстное меню элемента TextBox
Добавим к нему элемент контекстного меню contextMenu из окна панели инструментов (ToolBox) на форму, которую назовем "blank". Пункты контекстного меню добавляем точно так же, как мы это делали для главного меню (Рис.4 и 5):
Рис.9. Пункты контекстного меню
Свойство Text и Shortcut пунктов контекстного меню оставляем оставим такими же, как и в главном меню. Если мы установим затем для свойства ShowShortcut значение false, то указанные Вами сочетания клавиш будут работать, но в самом меню отображаться не будут (как на Рис.9). Свойство Name будет формироваться следующим образом: для пункта Cut — "cmnuCut", для Сopy — "cmnuCopy" и т.д.
В обработчике пунктов просто вызываем соответствующие методы:
private void cmnuCut_Click(object sender, System.EventArgs e){ Cut(); }
private void cmnuCopy_Click(object sender, System.EventArgs e){ Copy(); }
private void cmnuPaste_Click(object sender, System.EventArgs e){ Paste(); }
private void cmnuDelete_Click(object sender, System.EventArgs e){ Delete(); }
private void cmnuSelectAll_Click(object sender, System.EventArgs e){ SelectAll(); }
Реализация указанных функций может быть реализована в классе формы следующим образом:
// Вырезание текста
public void Cut()
{
this.BufferText = richTextBox1.SelectedText;
richTextBox1.SelectedText = "";
}
// Копирование текста
public void Copy()
{
this.BufferText = richTextBox1.SelectedText;
}
// Вставка
public void Paste()
{
richTextBox1.SelectedText = this.BufferText;
}
// Выделение всего текста — используем свойство SelectAll элемента управления RichTextBox
public void SelectAll()
{
richTextBox1.SelectAll();
}
// Удаление
public void Delete()
{
richTextBox1.SelectedText = "";
this.BufferText = "";
}
Последнее,
что нам осталось сделать, — это определить,
где будет появляться контекстное меню.
Элемент RichTextBox
имеет
свойство ContextMenu,
где мы и указываем contextMenu1,
поскольку нам нужно отображать меню
именно в текстовом поле. Запускаем
приложение — теперь в любой точке текста
доступно меню (Рис.
2.10).
Рис. 10. Контекстное меню
