Диалоговые окна

В библиотеке.NET нет специального класса для представления диалоговых окон. Вместо этого устанавливаются определенные значения свойств в классе обычной формы. В диалоговом окне можно располагать те же элементы управле­ния, что и на обычной форме. Диалоговое окно характеризуется:

□ неизменяемыми размерами (FormBorderStyle = FixedDialog);

□ отсутствием кнопок восстановления и свертывания в правом верхнем углу за­
головка формы (MaximizeBox = False, MinimizedBox = False);

□ наличием кнопок наподобие ОК, подтверждающей введенную информацию,
и Cancel, отменяющей ввод пользователя, при нажатии которых окно закры­
вается (AcceptButton = имя_кнопки_ОК, Cancel Button = имя_кнопки_Сапсе1);

□ установленным значением свойства DialogResult для кнопок, при нажатии ко­
торых окно закрывается.

Для отображения диалогового окна используется метод ShowModal, который фор­мирует результат выполнения из значений перечисления DialogResult, описан­ных в табл. 14.5. Если пользователь закрыл диалоговое окно щелчком на кнопке наподобие ОК, введенную им информацию можно использовать в дальнейшей работе. Закрытие окна щелчком на кнопке вроде Cancel отменяет все введенные данные. Диалоговое окно обычно появляется при выборе пользователем некото­рой команды меню на главной форме.

В листинге 14.6 приведен пример простого приложения, содержащего две формы. На главной форме (рис. 14.11) расположено меню из двух команд — Dialog и Exit. При выборе команды Dialog появляется диалоговое окно, включающее метку Введите информацию, поле ввода текста и две кнопки, ОК и Cancel (рис. 14.12).

Рис. 14.11. Главное окно приложения с меню и диалоговым окном

Рис. 14.12. Диалоговое окно

Если пользователь введет текст в диалоговое окно и закроет его щелчком на кнопке ОК, этот текст отобразится в поле метки в главном окне. Если диалого­вое окно будет закрыто щелчком на кнопке Cancel, поле метки останется неиз­менным.

Добавление в проект второй формы выполняется выбором в меню команды Project ► Add Windows Form. Начнем визуальное проектирование с этой формы. Значения свойств компонентов, установленных с помощью окна свойств, пере­числены в табл. 14.10.

Таблица 14.10. Значения свойств элементов формы

Элемент Свойство Значение

Метка Text Введите информацию

TextAlign MiddleCenter

Поле ввода Text Пустое значение

Кнопка Name btnOK

DialogResult OK

Text OK

Кнопка Name btnCancel

DialogResult Cancel

Text Cancel

Форма AcceptButton btnOK

CancelButton btnCancel

FormBorderStyle FixedDialog

MaximizeBox False

MinimizeBox False

StartPosition CenterParent

Пользователь вводит информацию в поле ввода textBox1, которое является за­крытым элементом формы. Чтобы получить значение свойства Text поля ввода, добавим в описание класса свойство Info. Это единственное дополнение, которое вносится в шаблон текста класса формы:

public class Form2: Form

{

private Label label1;

private TextBox textBox1;

private Button btnOK;

private Button btnCancel;

private Container components = null;

public string Info

{

get

{

return textBox1.Text;

}

}

}

Визуальное проектирование главной формы еще проще, чем первой, и сводится к размещению главного меню и метки. Для наглядности метка окружена рамкой (BorderStyle = FixedSingle). Вот как выглядят обработчики событий для пунктов меню:

private void menuItem1_Click(object sender, EventArgs e)

{

Form2 f = new Form2(); // создание экземпляра класса окна

if (f.ShowDialog() == DialogResult.OK) // отображение окна

label1.Text = f.Info;

}

private void menuItem2_Click(object sender. EventArgs e)

{

Close(); // закрытие главного окна

}

Как видите, для отображения диалогового окна следует создать экземпляр объекта соответствующей формы, а затем вызвать для этого объекта метод ShowDialog. При подтверждении ввода текст пользователя можно получить с помощью свой­ства Info, доступного только для чтения. При необходимости передавать инфор­мацию не только из диалогового окна, но и в него, можно добавить в описание свойства часть set.

ПРИМЕЧАНИЕ

Следует различать процесс создания формы — объекта класса Form или его наследни­ка — от процесса вывода формы на экран. Форма, как и любой объект, создается при выполнении операции new с вызовом конструктора. Для вывода формы служит метод Show или ShowDialog класса Form, вызываемый соответствующим объектом. Для скры­тия формы используется метод Hide. Фактически, методы Show и Hide изменяют свой­ство Visible объекта. Разница между скрытием формы методом Hide и ее закрытием методом Close состоит в том, что первый из них делает форму невидимой, но не изменя­ет сам объект, а метод Close делает объект недоступным и закрывает все его ресурсы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: