Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 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-е издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
}
private void MainWindow_OnExit(object sender, EventArgs evArgs) {
MessageBox.Show(string.Format("Форма версии {0} завершила работу.", Application.ProductVersion));
}
}
Делегат System.EventHandler
Обратите внимание на то, что событие ApplicationExit работает в паре с делегатом System.EventHandler. Этот делегат может указывать методы, соответствующие следующей сигнатуре.
delegate void EventHandler(object sender, EventArgs e);
Делегат System.EventHandler является самым примитивным делегатом, используемым для обработки событий Windows Forms, но существует очень много его вариаций. Что же касается EventHandler, то его первый параметр (типа System. Object) представляет объект, сгенерировавший данное событие. Второй параметр EventArgs (или его потомок) может содержать любую информацию, относящуюся к данному событию.
Замечание.Класс EventArgs является базовым для множества производных типов, содержащих дополнительную информацию для событий из определенных семейств. Так, для событий мыши используется параметр MouseEventArgs, предлагающий, например, такую информацию, как позиция (х, у) указателя. Для событий клавиатуры используется тип KeyEventArgs, предоставляющий информацию о текущих нажатиях клавиш и т.д.
Так или иначе, если вы перекомпилируете и запустите приложение, то теперь перед завершением работы приложения вы увидите соответствующий блок сообщения.
Исходный код.Проект AppClassExample размещен в подкаталоге, соответствующем главе 19.
"Анатомия" формы
Теперь, когда вы понимаете роль типа Application, следующей вашей задачей является непосредственное рассмотрение функциональных возможностей класса Form . Как и следует ожидать, класс Form наследует большинство своих функциональных возможностей от родительских классов. На рис. 19.3 показано окно Object Browser (в Visual Studio 2005), в котором отображается цепочка наследования производного от Form типа (вместе с набором реализованных интерфейсов).

Рис. 19.3. Происхождение типа Form
Полная цепочка наследования типа Form включает в себя множество базовых классов и интерфейсов, но здесь следует подчеркнуть, что вам, чтобы стать хорошим разработчиком приложений Windows Forms, совеем не обязательно понимать роль каждого члена всех родительских классов и каждого реализованного интерфейса в этой цепочке. Значения большинства членов (в частности, большинство свойств и событий), которые вы будете использовать ежедневно, очень просто устанавливаются с помощью окна свойств Visual Studio 2005. Перед рассмотрением конкретных членов, унаследованных типом Form от родительских классов, изучите информацию табл. 19.3, в которой описана роль соответствующих базовых классов.
Вы, наверное, сами понимаете, что подробное описание каждого члена всех классов в цепочке наследования Form потребует отдельной большой книги. Важно понять общие характеристики поведения, предлагаемого типами Control и Form. Bсe необходимые подробности о соответствующих классах вы сможете найти в документации .NET Framework 2.0 SDK.
Таблица 19.3.Базовые классы из цепочки наследования Form
Родительский класс | Описание |
---|---|
System.Object | Как и любой другой класс .NET, класс Form – это объект (Object) |
System.MarshalByRefObject | При обсуждении возможностей удаленного взаимодействия .NET (см. главу 18) уже подчеркивалось, что типы, полученные из этого класса, будут доступны по ссылке (а не по копии) удаленного типа |
System.ComponentModel.Component | Обеспечивает используемую по умолчанию реализацию интерфейса IComponent. В терминах .NET компонентом называется тип, поддерживающий редактирование в режиме проектирования, но не обязательно видимый во время выполнения |
System.Windows.Forms.Control | Определяет общие члены пользовательского интерфейса для всех элементов управления Windows Forms, включая саму форму |
System.Windows.Forms.ScrollableControl | Определяет автоматическую поддержку прокрутки содержимого |
System.Windows.Forms.ContainerControl | Обеспечивает контроль фокуса ввода для тех элементов управления, которые могут выступать в качестве контейнера для других элементов управления |
System.Windows.Forms.Form | Представляет любую пользовательскую форму, дочернее окно MDI или диалоговое окно |
Функциональные возможности класса Control
Класс System.Windows.Forms.Control задает общее поведение, ожидаемое от любого GUI-типа. Базовые члены Control позволяют указать размер и позицию элемента управления, выполнить захват событий клавиатуры и мыши, получить и установить фокус ввода, задать и изменить видимость членов и т.д. В табл. 19.4 определяются некоторые (но, конечно же, не все) свойства, сгруппированные по функциональности.
Таблица 19.4.Базовые свойства типа Control
Свойства | Описание |
---|---|
BackColor, ForeColor, BackgroundImage, Font, Cursor | Определяют базовые параметры визуализации элемента управления (цвет, шрифт для текста, вид указателя мыши при его размещении на элементе и т.д.) |
Anchor, Dock, AutoSize | Контролируют параметры размещения элемента управления в контейнере |
Top, Left, Bottom, Right, Bounds, ClientRectangle, Height, Width | Указывают текущие размеры элемента управления |
Enabled, Focused, Visible | Каждое из этих свойств возвращает значение типа Boolean, указывающее соответствующую характеристику состояния элемента управления |
ModifierKeys | Статическое свойство, содержащее информацию о текущем состоянии модифицирующих клавиш (‹Shift›, ‹Ctrl› и ‹Alt›) и возвращающее эту информацию в вида типа Keys |
MouseButtons | Статическое свойство, содержащее информацию о текущем состоянии кнопок мыши (левой, правой и средней) и возвращающее эту информацию в виде типа MouseButtons |
TabIndex, TabStop | Используются для указания порядка переходов по клавише табуляции для элемента управления |
Opacity | Определяет степень прозрачности элемента управления в дробных единицах (0.0 соответствует абсолютной прозрачности, а 1.0 – абсолютной непрозрачности) |
Text | Указывает текстовые данные, ассоциируемые с элементом управления |
Controls | Позволяет получить доступ к строго типизованной коллекции (ControlsCollection), содержащей все дочерние элементы управления, существующие в рамках данного элемента управления |
Кроме того, класс Control определяет ряд событий, позволяющих реагировать на изменение состояния мыши, клавиатуры, действия выделения и перетаскивания объектов (а также на многие другие действия). В табл. 19.5 предлагается описок некоторых (но далеко не всех) событий, сгруппированных по функциональности.
Таблица 19.5.События типа Control
События | Описание |
---|---|
Click, DoubleClick, MouseEnter, MouseLeave, MouseDown, MouseUp, MouseMove, MouseHover, MouseWheel | События, позволяющие учитывать состояние мыши |
KeyPress, KeyUp, KeyDown | События, позволяющие учитывать состояние клавиатуры |
DragDrop, DragEnter, DragLeave, DragOver | События, используемые для контроля действий, связанных с перетаскиванием объектов |
Paint | События, позволяющие взаимодействовать с GDI+ (см. главу 20) |
Наконец, базовый класс Control определяет целый ряд методов, позволяющих взаимодействовать с любым типом, производным от Control. При ближайшем рассмотрений методов Control вы обнаружите, что многие из них имеют префикс On, за которым следует имя соответствующего события (OnMouseMove, OnKeyUp, OnPaint и т.д.). Каждый из этих снабженных префиксом виртуальных методов представляет собой обработчик соответствующего события, заданный по умолчанию. Переопределив такой виртуальный член, вы получаете возможность выполнить необходимую предварительную (или заключительную) обработку данных, перед вызовом (или после вызова) родительской реализации обработчика события.
Читать дальшеИнтервал:
Закладка: