На этом шаге мы рассмотрим использование такого окна.
В первых шагах (9 шаг) мы рассматривали способы вывода сообщений в диалоговое окно. Для этого использовался метод Show() класса MessageBox. На самом деле, окно, которое отображается в таком случае, можно использовать не только для отображения сообщения, но и для получения ответа от пользователя. Для этого в окне с сообщением отображается несколько кнопок, и при щелчке пользователя по одной из них программа определяет, какую именно кнопку нажал пользователь.
Все дело в том, что метод Show() класса MessageBox возвращает результат. Просто раньше мы его не использовали. Результатом метода является одна из констант из перечисления DialogResult. Эта константа определяет кнопку, которую нажал пользователь в диалоговом окне (например, Abort, Cancel, Ignore, No, OK, Retry или Yes - название константы соответствует названию кнопки, по которой щелкает пользователь). Как все это используется на практике, иллюстрирует приведенная ниже программа.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace pr286_1 { // Главный класс: class Program { // Главный метод: static void Main() { // Текстовые переменные: string msg, title; // Переменная для определения пиктограммы: MessageBoxIcon icn; // Переменная для определения результата: DialogResult res; // Отображение диалогового окна: res = MessageBox.Show("Baм нравится C#?",// Сообщение "Риторический вопрос", // Заголовок MessageBoxButtons.YesNo, // Кнопки MessageBoxIcon.Question // Пиктограмма ); // Проверка результата: if (res == DialogResult.Yes) { // Если ответ "Да" // Текст сообщения: msg = "Дo6po пожаловать в команду!"; // Заголовок окна: title = "Наш человек"; // Пиктограмма: icn = MessageBoxIcon.Information; } else { // Если ответ "Нет" // Текст сообщения: msg = "У Вас нет сердца!"; // Заголовок окна: title = "Не может быть"; // Пиктограмма: icn = MessageBoxIcon.Error; } // Отображение окна с сообщением: MessageBox.Show(msg, title, MessageBoxButtons.OK, icn); } } }
В этой программе объявляется несколько переменных. Текстовые переменные msg и title нам нужны для того, чтобы запомнить текст сообщения и заголовок окна (который отображается последним в программе). В переменную icn (типа MessageBoxIcon) будет записано значение константы из перечисления MessageBoxIcon, определяющее тип пиктограммы для окна. Переменная res типа DialogResult используется для определения результата при нажатии кнопки в диалоговом окне. В переменную res записывается результат вызова статического метода Show() из класса MessageBox. Третьим аргументом методу передается константа YesNo из перечисления MessageBoxButtons. Эта константа означает, что у окна будет две кнопки (Yes и No, или Да и Нет).
На рисунке 1 показано, как выглядит первое окно (с вопросом), которое отображается при запуске программы на выполнение.
Рис.1. В начале выполнения программы появляется диалоговое окно с кнопками Да и Нет
Если пользователь нажимает в окне кнопку Да, то значением переменной res будет константа Yes из перечисления DialogResult. Если пользователь нажмет кнопку Нет, то в переменную res будет скопировано значение константы No из перечисления DialogResult. Поэтому условие res==DialogResult.Yes в условной конструкции истинно, если пользователь нажал в диалоговом окне кнопку Да. В этом случае выполняются команды
msg = "Дo6po пожаловать в команду!"; , title = "Наш человек"; и icn = MessageBoxIcon.Information; .
В противном случае (если условие res==DialogResult.Yes ложно) выполняются команды
msg = "У Вас нет сердца!"; , title = "Не может быть"; и icn = MessageBoxIcon.Error; .
MessageBox.Show(msg, title, MessageBoxButtons.OK, icn); ,
Рис.2. Такое окно появляется, если пользователь нажал кнопку Да
Если пользователь нажмет в первом окне кнопку Нет, то появится окно, показанное на рисунке 3.
Рис.3. Такое окно появляется, если пользователь нажмет кнопку Нет
На следующем шаге мы рассмотрим использование пространства имен.