Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Название:ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2007
- Город:Москва • Санкт-Петербург • Киев
- ISBN:ISBN 5-8459-1124-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание краткое содержание
В этой книге содержится описание базовых принципов функционирования платформы .NET, системы типов .NET и различных инструментальных средств разработки, используемых при создании приложений .NET. Представлены базовые возможности языка программирования C# 2005, включая новые синтаксические конструкции, появившиеся с выходом .NET 2.0, а также синтаксис и семантика языка CIL. В книге рассматривается формат сборок .NET, библиотеки базовых классов .NET. файловый ввод-вывод, возможности удаленного доступа, конструкция приложений Windows Forms, доступ к базам данных с помощью ADO.NET, создание Web-приложений ASP.NET и Web-служб XML. Книга содержит множество примеров программного кода, призванного помочь читателю в освоении предлагаемого материала. Программный код примеров можно загрузить с Web-сайта издательства.
ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
public class MainForm: Form {
public MainForm() {
…
// Для отслеживания событий KeyUp.
KeyUp += new KeyEventHandler(MainForm_KeyUp);
}
private void MainForm_KeyUp (object sender, KeyEventArgs e) {
MessageBox.Show(e. KeyCode.ToString(), "Нажата клавиша!");
}
}
Скомпилируйте и запустите программу. Теперь вы должны иметь возможность не только определить, какой кнопкой мыши был выполнен щелчок, но и то, какая была нажата клавиша на клавиатуре.
На этом мы завершим обсуждение функциональных возможностей базового класса Control и перейдем к обсуждению роли Form.
Исходный код.Проект ControlBehaviors размещен в подкаталоге, соответствующем главе 19.
Функциональные возможности класса Form
Класс Form обычно (но не обязательно) является непосредственным базовым классом для пользовательских типов Form. В дополнение к большому набору членов, унаследованных от классов Control, ScrollableControl и ContainerControl, тип Form предлагает свои собственные функциональные возможности, в частности для главных окон, дочерних окон MDI и диалоговых окон. Давайте сначала рассмотрим базовые свойства, представленные в табл. 19.8.
Таблица 19.8.Свойства типа Form
Свойства | Описание |
---|---|
AcceptButton | Читает или устанавливает информацию о кнопке, которая будет "нажата" (в форме), когда пользователь нажмет клавишу ‹Enter› |
ActiveMDIChild IsMDIChild IsMDIContainer | Используются в контексте МDI-приложения |
CancelButton | Читает или устанавливает информацию о кнопочном элементе управления, который будет "нажат", когда пользователь нажмет клавишу ‹Esc› |
ControlBox | Читает или устанавливает значение, являющееся индикатором наличия у формы экранной кнопки управления окном |
FormBorderStyle | Читает или устанавливает значение, задающее стиль границы формы (в соответствии с перечнем FormBorderStyle) |
Menu | Читает или устанавливает информацию о стыковке меню в форме |
MaximizeBox MinimizeBox | Используются для информации о наличии у формы кнопок минимизации и максимизации окна |
ShowInTaskbar | Указывает, будет ли форма видимой в панели задач Windows |
StartPosition | Читает или устанавливает значение, задающее начальную позицию окна формы (в соответствии с перечнем FormStartPosition) |
WindowState | Указывает (в соответствии с перечнем FormWindowState), в каком виде должна отображаться форма при запуске |
В дополнение к ожидаемым обработчикам событий с префиксом On, предлагаемым по умолчанию, в табл. 19.9 предлагается список некоторых базовых методов, определенных типом Form.
Таблица 19.9.Основные методы типа Form
Метод | Описание |
---|---|
Activate() | Активизирует форму и предоставляет ей фокус ввода |
Close() | Закрывает форму |
CenterToScreen() | Размещает форму в центре экрана |
LayoutMDI | Размещает все дочерние формы (в соответствии с перечнем LayoutMDI) в рамках родительской формы |
ShowDialog() | Отображает форму в виде модального диалогового окна. Более подробно о программировании диалоговых окон говорится в главе 21 |
Наконец, класс Form определяет ряд событий, связанных с циклом существования формы. Основные такие события описаны в табл. 19.10.
Таблица 19.10.Подборка событий типа Form
События | Описание |
---|---|
Activated | Происходит при активизации формы, т.е. при получении формой фокуса ввода |
Closed, Closing | Используются для проверки того, что форма закрывается или уже закрыта |
Deactivate | Происходит при деактивизации формы, те. когда форма утрачивает текущий фокус ввода |
Load | Происходит после того, как форма размещается в памяти, но пока остается невидимой на экране |
MDIChildActive | Генерируется при активизации дочернего окна |
Цикл существования типа Form
Если вы имеете опыт программирования интерфейсов пользователя с помощью таких пакетов разработки, как Java Swing, Mac OS X Cocoa или Win32 АРI, вы должны знать, что "оконные типы" поддерживают множество событий, происходящих в различные моменты цикла существования таких типов. То же самое можно сказать и о типах Windows Forms. Вы уже видели, что "жизнь" формы начинается тогда, когда вызывается конструктор типа, перед его передачей методу Application.Run().
После размещения соответствующего объекта в управляемой динамической памяти среда разработки приложений генерирует событие Load. В обработчике событий Load можно настроить вид и поведение формы, подготовить содержащиеся в форме дочерние элементы управления (окна списков, деревья просмотра и т.д.), организовать доступ к ресурсам, необходимым для работы формы (установить связь с базами данных, создать агенты для удаленных объектов и т.д.).
Следующим событием, генерируемым после события Load, является событие Activated. Это событие генерируется тогда, когда форма получает фокус ввода, как активное окно на рабочем столе. Логическим "антиподом" события Activated является (конечно же) событие Deactivate, которое генерируется тогда, когда форма утрачивает фокус ввода, становясь неактивным окном. Легко догадаться, что события Activated и Deactivate в цикле существования формы могут генерироваться множество раз, поскольку пользователь может переходить от одного активного приложения к другому.
Когда пользователь решает закрыть соответствующую форму, по очереди генерируются еще два события: Closing и Closed. Событие Closing генерируется первым и дает возможность предложить конечному пользователю многими нелюбимое (но полезное) сообщение "Вы уверены, что хотите закрыть это приложение?". Этот шаг с требованием подтвердить выход полезен тем. что пользователю получает возможность сохранить данные соответствующего приложения перед завершением работы программы.
Событие Closing работает в паре с делегатом CancelEventHandler, определенным в пространстве имен System.ComponentModel. Если установить для свойства CancelEventArgs.Cancel значение true (истина), форме будет дано указание возвратиться к нормальной работе, и форма уничтожена не будет. Если установить для CancelEventArgs.Cancel значение false (ложь), будет сгенерировано событие Closed, и приложение Windows Forms будет завершено (домен приложения будет выгружен и соответствующий процесс прекращен).
Чтобы закрепить в памяти последовательность событий, происходящих в рамках цикла существовании формы, рассмотрим новый файл MainWindow.cs, в котором события Load, Activated, Deactivate, Closing и Closed обрабатываются в конструкторе класса так, как показано ниже (не забудьте добавить в программу директиву using для пространства имен System.ComponentModel, чтобы получить доступ к определению CancelEventArgs).
public MainForm() {
// Обработка различных событий цикла существования формы.
Интервал:
Закладка: