Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Создание диалоговых окон

Жизненный цикл типа Form

Жизнь формы начинается тогда, когда вызывается конструктор класса перед его передачей методу Application.Run(). Когда объект помещен в управляемую кучу, среда генерирует событие Load (Загружен). В обработчике события Load можно настроить внешний вид объекта Form, подготовить содержащиеся в нем дочерние элементы (наподобие ListBox и TreeView) или выделить ресурсы, необходимые для работы формы (например, подключение к базе данных и модули доступа к удаленным объектам). После события Load генерируется событие Activated (Активирован), но только тогда, когда форма получает фокус как активное окно на рабочем столе. Логической противоположностью событию Activated является (конечно же) событие Deactivate (Деактивирован), которое возникает, когда форма перестает быть активным окном.

События Activated и Deactivate могут возникать неоднократно за время жизни конкретного объекта Form, когда пользователь переключается между активными окнами и приложениями. Если пользователь решает закрыть данную форму, возникают два события: FormClosing (Форма закрывается) и FormClosed (Форма закрыта). Событие FormClosing генерируется первым и удобно для вывода конечному пользователю сообщения: "Вы уверены, что хотите закрыть данное приложение?" Этот шаг позволяет пользователю сохранить все нужные данные, прежде чем закрыть приложение.

Событие FormClosing работает в сочетании с делегатом FormClosingEventHandler. Если установить свойство FormClosingEventArgs.Cancel равным true, то окно не будет уничтожено и просто возвратится к нормальной работе. А если FormClosingEventArgs.Cancel равно false, то возникает событие FormClosed, и приложение Windows Forms завершает работу, выгружает AppDomain и завершает процесс.

В программах с графическим пользовательским интерфейсом диалоговые окна являются одним из основных способов ввода пользовательской информации для использования в самом приложении. В отличие от других API-интерфейсов, в Windows Forms нет базового класса Dialog. Все диалоговые окна являются простыми типами, порожденными от класса Form.

Как правило, диалоговые окна не должны менять свой размер, поэтому свойству FormBorderStyle присваивается значение FormBorderStyle.FixedDialog. Кроме того, свойства MinimizeBox и MaximizeBox обычно устанавливаются равными false. В этом случае диалоговое окно имеет постоянный размер. А если установить равным false свойство ShowInTaskbar, то форма не будет отображаться на панели задач Windows.

Для кнопки ОК с помощью окна Properties можно установить свойство DialogResult равным ОК. Аналогично можно установить свойство DialogResult кнопки Cancel равным Cancel. Свойство DialogResult может быть довольно полезным, т.к. оно позволяет выбрать нужное действие, например выбираемое из списка: Abort, Cancel, Ignore, No, None, OK, Retry, Yes.

Многие пользователи привыкли перемещать фокус ввода с помощью клавиши < Таb >, если форма содержит несколько графических элементов. Настройка последовательности переходов требует знакомства с двумя свойствами: TabStop и Tablndex. Свойство TabStop может принимать значения true или false, в зависимости от того, хотите ли вы, чтобы данный элемент получал фокус с помощью клавиши < Таb >. Если свойство TabStop для какого-то элемента равно true, то для этого элемента можно установить свойство TabOrder, чтобы задать порядок активации в последовательности переходов (нумерация с нуля).

Во многих формах, требующих от пользователя ввода каких-то данных (особенно в диалоговых окнах) имеется специальная кнопка, которая срабатывает при нажатии клавиши. Допустим, что при нажатии пользователем клавиши < Enter > нужно вызывать обработчик события Click для кнопки btnOK. Для этого достаточно установить свойство AcceptButton в значение btnOK в программном коде или с помощью окна Properties.

При работе с диалоговыми окнами первым делом надо решить, открывать ли их в модальном или немодальном режиме. Модальные диалоговые окна должны быть закрыты пользователем, прежде чем он сможет вернуться в окно, из которого первоначально было открыто данное диалоговое окно. Примером модального окна может служить большинство окон "О программе". Чтобы открыть новое диалоговое окно, нужно вызвать метод ShowDialog() из объекта этого диалогового окна. А для вывода немодального диалогового окна предназначен метод Show(), который позволяет пользователю переключаться между диалогом и главным окном (как диалог "Найти/заменить"). Пример запуска формы:

private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.Show();//f2.ShowDialog(); button1.Text = "123"; }
<== предыдущая лекция | следующая лекция ==>
Анатомия формы | Стандартные диалоговые окна
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 377; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.