- •Лекція 6. Створення меню і панелей інструментів План
- •6.1. Створення головного меню для застосунку
- •6.1.1. Розміщення меню
- •6.1.2. Призначення клавіш швидкого доступу (ShortcutKeys)
- •6.1.3. Створення обробників команд меню
- •6.2. Створення панелі інструментів
- •6.2.1. Стандартні кнопки панелі інструментів
- •6.2.2. Додавання власних кнопок
- •6.3. Меню Про програму (About). Виклик форми з меню
- •6.3.1. Вставка нової форми в проект
- •Розміщення рисунку на формі
- •6.2.3. Спливаючі підказки
- •6.3.2. Використання стандартного вікна Про програму (About)
- •6.4. Обробка подій кнопок панелі інструментів і меню. Делегати.
- •6.5. Команди меню як прапорці
6.3.2. Використання стандартного вікна Про програму (About)
Додамо до проекту стандарту форму FormAbout для виведення довідкової інформації про програму. Для цього додамо в проект новий компонент, вибравши із списку AboutBox (Меню Project | Add New Item).
Для відкриття модального вікна діалогу використовується метод ShowDialog. Код для відкриття вікна може виглядати наступним чином:
Приклад 6.6.
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
AboutBox1 aboutBox = new AboutBox1();
aboutBox.ShowDialog(this);
}
Ця стандартна форма має обмежену функціональність.
6.4. Обробка подій кнопок панелі інструментів і меню. Делегати.
Кнопки панелі інструментів дублюють відповідні команди меню. І кнопки і команди меню генерують власні події, наприклад, Click.
Для того, щоб не дублювати код обробників можна:
1. Написати закритий метод класу, який реалізує обробку події і викликати цей метод з обробника меню і обробника кнопки.
2. Застосувати делегати. Тут делегати відіграють роль покажчиків на функцію.
Наприклад, обробник меню Про програму має вигляд:
Приклад 6.7.
//Довідка про програму - власна форма
private void мояДовідкаToolStripMenuItem_Click(object sender, EventArgs e)
{
//створення об'єкту класу і записк форми як модального діалогу
MyHelp myform = new MyHelp();
myform.ShowDialog();
}
Обробник кнопки на панелі інструментів містить тільки посилання на потрібний обробник
Приклад 6.8.
//кнопка Help - виклик власного вікна про програму
private void helpToolStripButton_Click(object sender, EventArgs e)
{
мояДовідкаToolStripMenuItem_Click(this, new EventArgs());
}
6.5. Команди меню як прапорці
Кожна команда меню має властивість Name (ID-команди), цій властивості автоматично призначається ім'я, яке складається з тексту команди та ToolStripMenuItem.
Це ідентифікатор об'єкту, за яким можна звертатися до команди в коді.
Наприклад, в нашому редакторі в меню Параметри є команда Панель інструментів, яка дозволяє приховувати і відкривати панель інструментів.
Ії властивість Name встановлена за замовчанням як:
панельІнструментівToolStripMenuItem
Кожний об'єкт має булеву властивість Checked, яка має значення true, якщо об'єкт вибраний, і false, якщо ні.
Скористаємося цією властивістю для реалізації приховування і відображення панелі інструментів.
панельІнструментівToolStripMenuItem.Checked
Для цього в конструктор форми додамо дві команди
toolStrip1.Visible = true;
панельІнструментівToolStripMenuItem.Checked = true;
Перша робить видимою панель інструментів, друга – встановлює, що команда меню Панель інструментів вибрана (включає прапорець).
Крім цього в конструктор форми додамо вертикальну смугу прокручування ScrollBars.Vertical, очищення вікна редактора та такст заголовка.
Метод конструктора буде мати вигляд:
Приклад 6.9.
public Form1()
{
//Створення форми
InitializeComponent();
textBox1.ScrollBars = ScrollBars.Vertical;
textBox1.Text = string.Empty;
this.Text = "NkEdit - Новий документ";
// вивести панель инструментов
toolStrip1.Visible = true;
панельІнструментівToolStripMenuItem.Checked = true;
}
Для приховування/відображення панелі інструментів напишемо обробник команди Панель інструментів у вигляді.
Приклад 6.9.
// Меню Параметри
//вибір команди Панель інструментів
private void панельІнструментівToolStripMenuItem_Click(object sender, EventArgs e)
{
// відобразити/приховати панель інструментів
toolStrip1.Visible = !toolStrip1.Visible;
панельІнструментівToolStripMenuItem.Checked = !панельІнструментівToolStripMenuItem.Checked;
}
В цьому методі команда toolStrip1.Visible = !toolStrip1.Visible;
встановлює властивість Visible в true або false, в залежності від поточного значення.
Команда
панельІнструментівToolStripMenuItem.Checked = !панельІнструментівToolStripMenuItem.Checked;
Встановлює чи вимикає прапорець, в залежності від поточного значення.
Висновки
В C# реалізовані всі класи, необхідні для створення інтерактивних меню і панелей інструментів. При цьому Visual Studio надає візуальні засоби розробки структур меню, генерує шаблони обробників подій, які потрібно обробляти в коді. Для виключення дублювання коду в обробниках подій команд меню і кнопок панелей інструментів можна використовувати делегати (показчики на функцію) чи написати універсальний закритий метод, який викликати в потрібному обробнику.
Контрольні питання і завдання для самостійного виконання
Який елемент управління використовується для створення структури меню?
Як виключити дублювання коду обробника команди меню і відповідної кнопки панелі інструментів?
Яке призначення клавіш швидкого доступу?
Як задати для пунктів меню клавіші швидкого доступу?
Який елемент управління використовується для створення панелі інструментів?
Обробник якої події генерується при виборі команди меню?
Як створити панель інструментів зі стандартними елементами?
Як додати на панель інструментів свою кнопку?
Як розмістити рисунок на кнопці панелі інструментів?
Як додати до кнопок панелі інструментів спливаючі підказки (ToolTip)?
Як зробити команди меню у вигляді прапорців?
