Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР9.doc
Скачиваний:
24
Добавлен:
21.09.2019
Размер:
4.54 Mб
Скачать

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

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

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

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

  • наличием кнопок наподобие OK, подтверждающей введенную информацию, и Cancel, отменяющей ввод пользователя, при нажатии которых окно закрывается (AcceptButton = имя_кнопки_OK, CancelButton=имя_кнопки_Cancel);

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

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

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

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

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

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

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

Таблица 9.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.