Как правило, для вывода сообщений применяется элемент MessageBox. Однако кроме сообственно вывода строки сообщения данный элемент может устанавливать ряд настроек, которые определяют его поведение.
Для вывода сообщения в классе MessageBox предусмотрен метод Show, который имеет различные версии и может принимать ряд параметров. Рассмотрим одну из наиболее используемых версий:
1 2 3 4 5 6 7 8 | public static DialogResult Show( string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options ) |
Здесь применяются следующие параметры:
text: текст сообщения
caption: текст заголовка окна сообщения
buttons: кнопки, используемые в окне сообщения. Принимает одно из значений перечисления MessageBoxButtons:
- AbortRetryIgnore: три кнопки Abort (Отмена), Retry (Повтор), Ignore (Пропустить)
- OK: одна кнопка OK
- OKCancel: две кнопки OK и Cancel (Отмена)
- RetryCancel: две кнопки Retry (Повтор) и Cancel (Отмена)
- YesNo: две кнопки Yes и No
- YesNoCancel: три кнопки Yes, No и Cancel (Отмена)
Таким образом, в зависимости от выбора окно сообщения может иметь от одной до трех кнопок.
icon: значок окна сообщения. Может принимать одно из следующих значений перечисления MessageBoxIcon:
- Asterisk, Information: значок, состоящий из буквы i в нижнем регистре, помещенной в кружок
- Error, Hand, Stop: значок, состоящий из белого знака "X" на круге красного цвета.
- Exclamation, Warning: значок, состоящий из восклицательного знака в желтом треугольнике
- Question: значок, состоящий из вопросительного знака на периметре круга
- None: значок у сообщения отсутствует
defaultButton: кнопка, на которую по умолчанию устанавливается фокус. Принимает одно из значений перечисления MessageBoxDefaultButton:
- Button1: первая кнопка из тех, которые задаются перечислением MessageBoxButtons
- Button2: вторая кнопка
- Button3: третья кнопка
options: параметры окна сообщения. Принимает одно из значений перечисления MessageBoxOptions:
- DefaultDesktopOnly: окно сообщения отображается на активном рабочем столе.
- RightAlign: текст окна сообщения выравнивается по правому краю
- RtlReading: все элементы окна располагаются в обратном порядке справа налево
- ServiceNotification: окно сообщения отображается на активном рабочем столе, даже если в системе не зарегистрирован ни один пользователь
Нередко используется один параметр - текст сообщения. Но посмотрим, как использовать остальные параметры. Пусть у нас есть кнопка, в обработчике нажатия которой открывается следующее окно сообщения:
1 2 3 4 5 6 7 8 9 10 | private void button1_Click(object sender, EventArgs e) { MessageBox.Show( "Выберите один из вариантов", "Сообщение", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly); } |
Однако нам не просто дается возможность установки кнопок в окне сообщения. Метод MessageBox.Show возвращает объект DialogResult, с помощью которого мы можем узнать, какую кнопку в окне сообщения нажал пользователь. DialogResult представляет перечисление, в котором определены следующие значения:
- Abort: нажата кнопка Abort
- Retry: нажата кнопка Retry
- Ignore: нажата кнопка Ignore
- OK: нажата кнопка OK
- Cancel: нажата кнопка Cancel
- None: отсутствие результата
- Yes: нажата кнопка Yes и No
- No: нажата кнопка No
Используем обработку выбора пользователя, изменив обработчик нажатия кнопки следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | private void button1_Click(object sender, EventArgs e) { DialogResult result = MessageBox.Show( "Окрасить кнопку в красный цвет?", "Сообщение", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly); if (result == DialogResult.Yes) button1.BackColor=Color.Red; this.TopMost = true; } |
И теперь, если в окне сообщения мы выберем вариант Yes, то кнопка окрасится в красный цвет.
2. Задание: реализуйте методы предложенных объектов.