- •Лекція 7. Використання стандартних компонентів в проекті План
- •7.1. Відкриття файлу - OpenFileDialog
- •7.2. Збереження файлу - SaveFileDialog
- •7.3. Вибір шрифту - FontDialog
- •7.4. Вибір кольору – ColorDialog
- •7.5. Друкування файлу – PrintDialog
- •7.6. Обробка подій кнопок панелі інструментів
- •7.7. Завершення роботи програми та інші події
- •7.7.1. Завершення роботи програми
- •7.7.2. Обробка події зміни файлу
- •7.7.3. Закриття вікна у заголовку форми
- •7.8. Виведення повідомлень - MessageBox
7.7.2. Обробка події зміни файлу
При кожній дії з текстом у вікні генерується подія TextChanged, її обробка полягає у встановленні глобальної змінної в true. Перевірка значення цієї змінної виконується при завершенні роботи.
//Текст у вікні редактора змінився - обробник події TextChanged
private void textBox1_TextChanged(object sender, EventArgs e)
{
docChanged = true;
}
7.7.3. Закриття вікна у заголовку форми
При закритті форми через системну кнопку у заголовку форми генерується подія FormClosing. Для того, щоб зв'язати обробник з подією, потрібно його встановити у вікні подій форми для цієї події. Тоді при закритті форми буде перевірятися, чи змінювався текст у вікні.
Лістинг 7.9.
// Користувач натиснув на формі кнопку "Закрити вікно" у Заголовку
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (docChanged)
{
DialogResult dr;
dr = MessageBox.Show("Зберегти зміни?", "NkEdit",
MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Warning);
switch (dr)
{
case DialogResult.Yes:
if (SaveDocument() != 0)
// користувач відмінив операцію збереження файлу
e.Cancel = true; // відмінити закриття вікна програми
break;
case DialogResult.No: ;
break;
case DialogResult.Cancel:
// відмінити закриття вікна програми
e.Cancel = true;
break;
};
}
}
7.8. Виведення повідомлень - MessageBox
Для виведення діагностичних повідомлень використовується стандартний статичний клас MessageBox.
Метод Show цього классу виводить текст повідомлення користувачу.
Приклад:
MessageBox. Show(“Hello!”);
Прототип методу має вигляд:
public static DialogResult Show(string message);
Метод Show повертає результат типу DialogResult.
Коли користувач клацає кнопку ОК, метод Show повертає значення, рівне DialogResult.OK. Це значення можна використати в програмі для перевірки дій користувача (яку кнопку він натиснув, щоб закрити форму).
Існує багато перегружених методів класу MessageBox.Show. Крім тексту повідомлення, можна задати інші параметри, наприклад, параметр caption дозволяє задати текст заголовка діалогового вікна MessageBox.
За допомогою параметра btns можна вказати, які кнопки необхідно розташувати у вікні діалогового вікна. Цей параметр задається константами з переліку MessageBoxButtons (табл. 7.1).
Таблиця 7.1. Можливі значення параметра btns
Константа |
Кнопки, які відображаються у вікні MessageBox |
ОК |
OK |
OKCancel |
OK, Cancel |
YesNo |
Yes, No |
YesNoCancel |
Yes, No, Cancel |
RetryCancel |
Retry, Cancel |
AbortRetryIgnore |
Abort, Retry, Ignore |
Параметр icon методу MessageBox.Show дозволяє вибрати один з декількох значків для розташування в лівій частині діалогового вікна. Він задається у вигляді константи з переліку MessageBoxIcon (рис. 7.1):
-
Константа
Значок
Asterisk, Information
Error, Stop
Exclamation, Darning
Question
None
Значок не виводиться
Рис. 7.1. Можливі значення MessageBoxIcon
Параметр defButton методу MessageBox.Show призначений для вибору кнопки, яка отримає фокус відразу після відображення діалогового вікна. Цей параметр повинен мати одне із значень з переліку MessageBoxDefaultButton (табл. 7.2):
Таблиця 7.2. Можливі значення MessageBoxDefaultButton
Константа |
Номер кнопки, яка одержує фокус вводу за замовчанням |
Button l |
1 |
Button 2 |
2 |
Button 3 |
3 |
Якщо в діалоговому вікні відображаються кнопки Yes, No і Cancel, то вони будуть пронумеровані послідовно: кнопка Yes отримає номер 1 (константа Button1), кнопка No - номер 2 (константа Button2), а кнопка Cancel - номер 3 (константа Button3).
Якщо у вікні MessageBox є декілька кнопок, то для того, щоб визначити, яку кнопку клацнув користувач, програма повинна проаналізувати значення, яке повертає метод MessageBox.Show.
Метод MessageBox.Show може повернути одне з декількох значень з переліку DialogResult (табл.7.3):
Таблиця 7.3. Можливі значення DialogResult
-
Константа
Кнопка, при виборі якої повертається ця константа
Abort
Abort
Cancel
Cancel
Ignore
Ignore
No
No
None
Модальне вікно діалогу продовжує працювати
OK
OK
Retry
Retry
Yes
Yes
Приклад:
DialogResult result = MessageBox.Show(" Видалити дані \n по працівнику? ",
"Попередження", MessageBoxButtons.YesNo, MessageBoxIcon.Warning,
MessageBoxDefaultButton.Button2);
Висновки
Для прискорення створення програм в Visual Studio використовується багато стандартних компонентів, доступ до яких реалізується через їхні інтерфейси. Ці інтерфейси реалізовані у вигляді полів і методів відповідних класів, з якими може працювати програма. Прикладом таких компонентів є стандартні вікна діалогу, вікна виведення діагностичних повідомлень. Ці готові компоненти є наочним прикладом застосування компонентного підходу, реалізованого в .Net Framework.
Контрольні питання і завдання для самостійного виконання
В якій змінній повертається результат роботи стандартного вікна діалогу?
Яким чином реалізувати зберігання даних в файлі? Яке вікно діалогу для цього використати?
Яким чином можна встановити фільтр для огляду певних типів файлів? Яку властивість і якого класу потрібно налаштувати?
Яку властивість потрібно задати для того, щоб вивести назву файлу у вікні діалогу?
Як реалізувати діалог відкриття файлу?
Як реалізувати діалог збереження файлу?
Як реалізувати діалог роботи із шрифтами?
Як реалізувати друкування файлу?
Як реалізувати попередній перегляд файлу?
Як реалізувати виведення вікна повідомлення про помилку, в якому розміщений заголовок «Помилка», текст повідомлення, значок і кнопка ОК?
