- •Лабораторна робота №8-10. Тема: Розробка інтерфейсу користувача
- •Приклад mdi-інтерфейсу
- •Інтерфейс типу провідника
- •Редактор меню Menu Editor
- •Властивості меню для mdi-інтерфейсу
- •Властивості, що визначають стан пункту меню
- •Контекстне меню
- •Приклад створення меню
- •Рядок стану
- •Приклад створення рядка стану
- •Панель інструментів
- •Властивості панелі інструментів
- •Приклад створення панелі інструментів
- •Діалогові вікна
- •Вікно повідомлення
- •Icon - відображуваний поруч з текстом значок. Може приймати одне з значень (див. Таблицю нижче) перерахування MessageBoxIcon;
- •Діалогове вікно відкриття файлу
- •Діалогове вікно збереження файлу
- •Діалогове вікно налаштування шрифтів тексту
- •Діалогове вікно налаштування колірної палітри
- •Робота з картинками
- •Зображення, як властивість Image елемента управління
- •Малюємо картинки
- •Спосіб 2.
- •Метод DrawImage і його варіанти
- •Метод Save об'єкта Bitmap
- •Малюємо в пам'яті
- •Перемальовування картинок, фігур і тексту
- •Завдання
Властивості меню для mdi-інтерфейсу
Пункти меню мають також властивості, що дозволяють задавати їх поведінку у випадку MDI-інтерфейсу, коли є батьківські і дочірні вікна. За допомогою властивості MdiWindowListItem елемента управління MenuStrip можна задати пункт меню батьківського вікна, який буде містити список всіх дочірніх вікон. Цей список здатний містити до дев'яти вікон. Якщо таких вікон більше, то внизу меню з'являється пункт More Windows (Інші вікна), відкриває діалогове вікно, в якому міститься повний список дочірніх вікон.
Для задання поведінки пунктів меню при об'єднанні меню батьківського та дочірнього вікон використовують властивості MergerAction і Mergerlndex. Щоб уникнути однакових пунктів меню або заборонити відображати деякі при об'єднанні в разі розташування головного меню дочірнього вікна в батьківському вікні, необхідно використовувати дані властивості.
Для того щоб можна було об'єднувати меню батьківського і дочірнього вікон, необхідно властивості AllowMerge елемента управління MenuStrip присвоїти значення True.
Властивість MergerAction може приймати значення, зазначені в таблиці:
Значення властивості |
Опис |
Insert |
Пункт меню включається в об’єднане меню |
Replace |
Пункт меню замінює пункт, що знаходиться в тій же позиції, що задається властивістю MergerІndex |
Remove |
Пункт меню не додається в набір об'єднуваних пунктів |
MatchOnly |
Всі пункти підменю зазначеного меню об'єднуються з пунктами підменю, що знаходиться в тій же позиції об'єднаного меню |
Властивість Mergerlndex задає позицію об'єднання пунктів меню. За замовчуванням ця властивість приймає значення -1. Наприклад, якщо необхідно об'єднати меню File (Файл) дочірнього і батьківського вікон, то слід задати значення MatchOnly для властивості дочірнього вікна MergerAction.
Властивості, що визначають стан пункту меню
Властивість Visible визначає видимість на екрані пункту меню. Якщо це властивість приймає значення False, то пункт меню не видко при виконанні програми. При роботі програми, за допомогою цієї властивості, пункти меню можна динамічно ховати або показувати.
Якщо ж необхідно визначити можливість виконання команди (пункту) меню, але при цьому залишити її видимою для користувача, використовується властивість Enable. Якщо встановлено значення False для цієї властивості, то пункт меню виділяється сірим кольором і блокується для вибору. Таким чином, можна залежно від контексту об'єкта команди забороняти або дозволяти виконання команди.
Контекстне меню
Контекстне меню - це меню, пов'язане з деякою дією (зазвичай це клацання правої кнопки миші на об'єкті) і викликається в будь-якому місці програми. У початковому стані контекстне меню невидиме і візуалізується поруч з покажчиком миші після виклику. Контекстним таке меню називається тому, що воно з'являється поруч з обраним об'єктом і його склад залежить від вмісту (контексту) цього об'єкта. Після вибору команди з контекстного меню воно зникає. Проектується контекстне меню аналогічно головному за допомогою редактора меню Menu Editor (редактор меню).
Створюється контекстне меню аналогічно головному меню, але з однією відмінністю: оскільки головне меню одне на весь додаток, а контекстне меню - своє для кожного об'єкту, то нам доведеться крім усього іншого прив'язувати кожне контекстне меню до свого об'єкту. Приступимо.
Помістимо на форму кнопку і зробимо два контекстні меню: одне для форми, інше - для кнопки.
У контекстне меню для форми включимо два пункти:
Пофарбувати форму в синій колір
Пофарбувати форму в червоний колір
У контекстне меню для кнопки включимо два пункти:
Розширити кнопку
Звузити кнопку
При клацанні правою клавішею миші по поверхні форми повинне з'являтися одне меню, по кнопці – інше.
Створюємо контекстні меню. Помістимо на форму елемент управління ContextMenu. Він розташується під формою під ім'ям ContextMenu1. Це буде наше контекстне меню для форми. Аналогічно розмістимо ContextMenu2. Це буде контекстне меню для кнопки.
Клацнемо по елементу ContextMenu1. На формі з'явиться область, яку ми заповнимо пунктами про синій і червоний кольори, як це робили з Головним меню. Клацнемо по елементу ContextMenu2 і аналогічно заповнимо область про розширення і звуження.
Прив'язуємо контекстні меню. Меню готові. Тепер потрібно якось сказати комп'ютеру, що ContextMenu1 відноситься до форми, а ContextMenu2 – до кнопки. Зайдемо у вікно властивостей форми і встановимо властивості ContextMenu значення ContextMenu1. Зайдемо у вікно властивостей кнопки і встановимо властивості ContextMenu значення ContextMenu2.
Примушуємо контекстні меню працювати. Робимо це аналогічно головному меню. Подвійне клацання по пункту меню - і у вікні коду з'являється заготівка процедури, куди ми пишемо все, що нам потрібне. Ось що у вас повинно вийти:
Private Sub MenuItem1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItem1.Click
Me.BackColor = Color.Blue 'Контекстне меню форми - Пофарбувати її в синій колір
End Sub
Private Sub MenuItem2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
Me.BackColor = Color.Red 'Контекстне меню форми - Пофарбувати її в червоний колір
End Sub
Private Sub MenuItem3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
Button1.Width = Button1.Width + 20 'Контекстне меню кнопки - Розширити її
End Sub
Private Sub MenuItem4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItem4.Click
Button1.Width = Button1.Width - 20 'Контекстне меню кнопки - Свузити її
End Sub
