- •Содержание
- •Введение в программирование под Windows
- •Событийно-управляемое программирование
- •Шаблон Windows-приложения
- •Класс Control
- •Элементы управления
- •Метка Label
- •Кнопка Button
- •Поле ввода TextBox
- •Меню MainMenu и ContextMenu
- •Флажок CheckBox
- •Переключатель RadioButton
- •Панель GroupBox
- •Список ListBox
- •Предварительные замечания о формах.
- •Класс Form
- •Диалоговые окна
- •Класс Application
- •Краткое введение в графику
- •Индивидуальные задания
- •Вариант 0
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Вариант 17
- •Вариант 18
- •Вариант 19
- •Вариант 20
- •Пример выполнения варианта №0
Диалоговые окна
В библиотеке .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, поле метки останется неизменным.
Добавление в проект второй формы выполняется выбором в меню команды ProjectAdd 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.