Вход/Регистрация
ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
вернуться

Троелсен Эндрю

Шрифт:

Рис. 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 и т.д.). Каждый из этих снабженных префиксом виртуальных методов представляет собой обработчик соответствующего события, заданный по умолчанию. Переопределив такой виртуальный член, вы получаете возможность выполнить необходимую предварительную (или заключительную) обработку данных, перед вызовом (или после вызова) родительской реализации обработчика события.

public class MainWindow: Form {

 protected override void OnMouseDown(MouseEventArgs e) {

// Добавленный программный код для события MouseDown.

// Вызов родительской реализации.

base.OnMouseDown(e);

 }

}

Это может оказаться полезным, например, при создании пользовательских элементов управления, которые получаются из стандартных (см. главу 21), но чаще всего вы будете использовать обработку событий в рамках стандартного синтаксиса событий C# (именно это предлагается средствами проектирования Visual Studio 2005 по умолчанию). В этом случае среда разработки вызовет пользовательский обработчик события после завершения работы родительской реализации.

public class MainWindow: Form {

 public MainWindow {

MouseDown += new MouseEventHandler(MainWindow_MouseDown);

 }

 void MainWindow_MouseDown(object sender, MouseEventArgs e) {

// Добавленный программный код для события MouseDown.

 }

}

Кроме методов вида OnХХХ, есть несколько других методов, о которые вам следует знать.

  • Читать дальше
  • 1
  • ...
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: