Створення меню 1
ЩЕ МАТЕРІАЛИ ПО ТЕМІ:
Меню, що знаходиться між заголовком і клієнтської областю вікна програми, називається головним меню. Крім головного меню існує інший вид меню контекстні меню або їх ще називають меню швидкого виклику. Пункти у видимій частині головного меню називаються пунктами верхнього рівня. Вибір будь-якого пунктаверхнего рівня головного меню призводить до появи у вигляді прямокутника підміню або іншими словами дочірнього меню. Підміню в свою чергу складається з декількох пунктів. У загальному випадку меню верхнього рівня являє собою масив пунктів меню, а кожен пункт меню - масив пунктів підміню.
Для створення меню використовуються класи MainMenu, ContextMenu і MenuItem, породжені від абстрактного класу Menu. У класі Menu оголошений внутрішній клас MenuItemCollection, який успадковується класами MainMenu, ContextMenu і MenuItem.
Для створення головного меню можна використовувати один з трьох конструкторів класу MainMenu:
public MainMenu (MenuItem [] menuItems)
public MainMenu (IContainer container)
Після створення об'єкта MainMenu, необхідно викликати властивість форми Menu і передати йому ім'я об'єкта MainMenu. Властивість Menu форми є як для запису, так і для читання. Це властивість дозволяє замінювати в процесі роботи додатка, одне меню форми іншим.
Для створення контекстного меню можна використовувати один з двох
конструкторів класу ContextMenu:
public ContextMenu (MenuItem [] menuItems)
Зазвичай контекстне меню пов'язано з, якихось, елементом управління, тобто при натисканні правою кнопкою миші на поверхні елемента управління з'являється контекстне меню. Для того щоб зв'язати об'єкт, який є контекстним меню, з елементом управління необхідно використовувати властивість ContextMenu елемента, успадковане ним від класу Contol. Властивість ContextMenu є як для запису, так і для читання.
Контекстне меню не обов'язково пов'язувати з конкретним контрольним елементом. Його можна викликати в будь-якому обробнику події, використовуючи метод:
public void Show (Control control, Point pos),
Для створення кінцевих пунктів меню можна використовувати один з конструкторів класу MenuItem:
public MenuItem (string text),
public MenuItem (string text, EventHandler onClick),
public MenuItem (string text, MenuItem [] items),
public MenuItem (string text, EventHandler onClick, Shortcut shortcut),
text - назва пункту меню,
onClick - об'єкт типу EventHandler, який є делегатом. За допомогою
onClick викликається функція обробник пункту меню.
shortcut - комбінація клавіш для швидкого виклику пункту меню.
Shortcut - це перелік допустимих клавіатурний поєднань для меню. Воно містить близько 150 різних поєднань. Використовувати в якості комбінації клавіш, які не визначені в перерахуванні не припустимо.
Як приклад створимо додаток, в якому є головне меню з двох пунктів і кожен пункт містить два підпункти. При виборі будь-якого пункту підменю на екран монітора виводиться вікно повідомлення MessageBox текст, якого відповідає назві пункту. Підміню першого пункту меню верхнього рівня може викликатися за допомогою швидких клавіш ALT + 1 і ALT + 2.
Скомпілюйте і виконайте додаток.
Зверніть увагу, що спочатку створюються пункти підміню, потім з цих пунктів створюється пункт меню верхнього рівня, і в останню чергу з пунктів меню верхнього рівня "збирається" головне меню.
Якщо необхідно в підміню відокремити візуально одну групу пунктів від іншої горизонтальною лінією, то необхідно оголосити пункт меню наступним чином:
MenuItem pnkt = new MenuItem ( "-");
Прочерк в якості імені підміню розпізнається як роздільник.
Клас MenuItem містить велику кількість властивостей. Використовуючи ці властивості можна динамічно змінювати зовнішній вигляд меню, управляти доступом до пунктів меню і т.п.
Деякі з них:
1. Shortcut - дозволяє встановлювати нове поєднання клавіш для швидкого доступу до меню,
ShowShortcut - установка значення властивості false забороняє висновок, праворуч від назви пункту меню, поєднання клавіш швидкого доступу до меню, true - дозволяє
3. Text - дозволяє змінювати назву пунктів меню
4. Visible - дозволяє (true) - забороняє (false) отбраженіе пунктів меню.
5. Enabled - блокує пункт меню при установці його в значення false і розблокує при установці в true. Заблокований пункт меню стає сірим.
6. DefaultItem - установка його в true призводить до того, що даний пункт меню стає пунктом меню за замовчуванням, тобто, при подвійному натисканні на Пунта меню верхнього рівня, це пункт підміню відразу викликається. Текст заголовка такого підміню виводиться напівжирним шрифтом.
7. Checked - установка його в true призводить до того, що зліва від назви пункту підміню виводиться галочка.
У класі Menu оголошений внутрішній клас MenuItemCollection, який успадковується класами MainMenu, ContextMenu і MenuItem. У класі MenuItemCollection реалізовані методи, що дозволяють додавати дочірні пункти меню до головного або контекстного меню або іншого пункту.
Menultem Add (string caption)
Menultem Add (string caption, EventHandler onClick)
Menultem Add (string caption, MenuItem [] items)
int Add (MenuItem item)
int Add (int index, MenuItem item)
void AddRange (MenuItem [] items)
Для визначення кількості пунктів меню в колекції можна використовувати властивість Count класу MenuItemCollection.
Розглянемо використання методу Add для створення контекстного меню.
У наведеному прикладі колір фону форми змінюється відповідно до обраного пунктом контекстного меню.