Елементи інтерфейсу: Вікно повідомлення

Вікно повідомлень є найпростішим з діалогових вікон і дозволяє відображати інформацію про виконання програми та її стан.

Вікно повідомлень не може приймати текстове введення, воно лише пропонує зробити вибір з обмеженої кількості представлених варіантів. Даний тип вікна не вимагає проектування: вікно складається з заголовка, тексту повідомлення, значка і однієї або декількох кнопок. При цьому існує лише певний набір відображуваних значків і кнопок. Крім того, вікно повідомлень є модальним і користувач не може продовжити роботу програми, не натиснувши жодної із запропонованих кнопок.

Рис.1. Приклад діалогового вікна виведення повідомлень

Вікно повідомлення викликається з програми методом MessageBox.Show, який повинен виглядати так:

    Function Show(ByVal owner As IWin32Window, _

                  ByVal text As String, _

                  ByVal caption As String, _

                  ByVal buttons As MessageBoxButtons, _

                  ByVal icon As MessageBoxIcon, _

                  ByVal defaultButton As MessageBoxDefaultButton, _

                  ByVal options As MessageBoxOptions) As DialogResult

де:

  • Owner - елемент управління, до якого буде ставитися вікно повідомлення;
  • Text - відображається в діалоговому вікні текст повідомлення. У цей текст можна вставити як роздільники рядків повернення каретки, переведення рядка або їх комбінацію з допомогою констант vbCr, vbLf і vbCrLf відповідно;
  • Caption - текст заголовка вікна повідомлення;
  • Buttons - кнопки, які відображаються у вікні повідомлення. Може приймати одне із значень (таблиця 1) перерахування MessageBoxButtons;

Таблиця 1. Кнопки, які розміщуються у вікні повідомлень

 Значення Набір кнопок діалогового вікна 
 AbortRetryIgnore  Abort (Відмінити), Retry (Повторити) та Ignore (Пропустити)
 OK  OK
 OKCancel  OK и Cancel (Відмінити)
 RetryCancel  Retry (Повторити) и Cancel (Відмінити)
 YesNo  Yes (Так) и No (Ні)
 YesNoCancel  Yes (Так), No (Ні) и Cancel (Відмінити)
  • icon - значок, що відображається поруч з текстом. Може приймати одне із значень (таблиця 2) перерахування MessageBoxIcon;

Таблиця 2. Значки, які розміщуються у вікні повідомлень

 Іконка Значення  Тип повідомлення 
   Asterisk, Information  Інформує про стан програми
   Error, Hand, Stop  Повідомляє про серйозну помилку при виконанні програми
   Exclamation, Warning  Попереджає про помилку, яка може викликати труднощі при роботі додатка
   Question  Вимагає додаткову інформацію
 Без іконки  None  Будь-яке інше повідомлення
  • defaultButton - обрана за замовчуванням кнопка, тобто кнопка, на яку встановлюється фокус. Може приймати одне із значень перерахування MessageBoxDefaultButton: Button1 (Перша кнопка), Button2 (Друга кнопка) і Button3 (Третя кнопка);
  • Options - параметри діалогового вікна. Може приймати одне із значень (таблиця 3) перерахування MessageBoxOptions.

Таблиця 3. Параметри вікна повідомлень

 Значення Опис 
 DefaultDesktopOnly  Вікно повідомлень розташовується на активному робочому столі
 RightAlign  Текст і заголовок вікна повідомлень вирівнюється по правому краю
 RtlReading  Елементи вікна повідомлень розташовуються в порядку читання справа наліво. Наприклад, значок з'являється праворуч від тексту повідомлення, а при наявності двох кнопок Yes (Так) і No (Ні), перша розташовується праворуч, а друга - зліва
 ServiceNotification  Вікно повідомлень розташовується на поточному активному робочому столі навіть в тому випадку, якщо жоден користувач не зареєстрований в системі

Примітка

У методі MessageBox.Show можна використовувати не всі параметри. Будь-яке число параметрів праворуч і параметр owner можна прибрати, залишивши хоча б параметр text. Наприклад, метод може містити лише параметри text і caption, тоді вікно повідомлень не буде містити значка і буде відображатися одна кнопка OK.

Метод MessageBox.Show повертає в залежності від натиснутої кнопки вікна повідомлень одне зі значень перерахування DialogResult. Перерахування DialogResult має значення Abort, Cancel, Ignore, No, OK, Retry, Yes, відповідні кнопкам вікна повідомлень, і значення None, коли вікно повідомлень знаходиться в процесі виконання.

Приклад виклику вікна повідомлень

Розглянемо невеликий приклад, який дозволить створювати різні вікна повідомлень. Для цього виконайте такі дії:

1. Створіть новий Windows-додаток з ім'ям MessageBoxExample.

2. Відкрийте вікно властивостей і задайте за допомогою властивостей Text і Name форми заголовок форми Вікна повідомлень і ім'я форми frmMsgBoxes.

3. Перетягніть на форму два елементи управління Button. Задайте для кожного елемента наступні значення властивостей Text і Name: Привітання та bWelc, Вихід і bExit.

4. Для відкриття при натисканні кнопки Привітання простого вікна повідомлення, що складається з заголовка, тексту повідомлення і кнопки OK, додайте в код програми процедуру обробки події натискання кнопки bWelc з наступною рядком:

        MessageBox.Show("Вітаємо Вас!", "Вікно повідомлень")

5. Для створення вікна повідомлення, що дозволяє завершити додаток, додайте в код програми процедуру обробки події натискання кнопки bExit з наступним кодом:

        Dim result As DialogResult

        result = MessageBox.Show("Ви дійсно бажаєте закрити програму?", _

                                 "Закриття програми", MessageBoxButtons.YesNo, _

                                 MessageBoxIcon.Asterisk)

        If result = DialogResult.Yes Then

            Application.Exit()

        End If

Приклад виконання програми наведено нижче:

Повний лістинг приладу:

Public Class frmMsgBoxes

    Private Sub bWelc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

                            Handles bWelc.Click

        MessageBox.Show("Вітаємо Вас!", "Віно повідомлень")

    End Sub

 

    Private Sub bExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

                            Handles bExit.Click

        Dim result As DialogResult

        result = MessageBox.Show("Ви дійсно бажаєте закрити програму?", _

                                 "Закриття програми", MessageBoxButtons.YesNo, _

                                 MessageBoxIcon.Asterisk)

        If result = DialogResult.Yes Then

            Application.Exit()

        End If

    End Sub

End Class