// Вызов родительской реализации.
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ХХХ, есть несколько других методов, о которые вам следует знать.
• Hide. Скрывает элемент управления, устанавливая для его свойства Visible значение false (ложь).
• Show. Делает элемент управления видимым, устанавливая для его свойства Visible значение true (истина).
• Invalidate. Заставляет элемент управления обновить свое изображение, посылая событие Paint.
Несомненно, класс Control определяет и другие свойства, методы и события в дополнение к тем, которые вы только что рассмотрели. Но и сейчас вы должны иметь достаточно хорошее представление об общих функциональных возможностях этого базового класса. Давайте рассмотрим примеры, позволяющие увидеть указанный класс в действии.
Использование возможностей класса Control
Чтобы продемонстрировать возможности применения некоторых членов класса Control, давайте построим новую форму, способную обеспечивать следующее.
• Отвечать на события MouseMove и MouseDown.
• Выполнять захват и обработку ввода с клавиатуры, реагируя на событие KeyUp.
Для начала создайте новый класс, производный от Form. В конструкторе, заданном по умолчанию, мы используем различные наследуемые свойства, чтобы задать исходный вид и поведение формы. Обратите внимание на то, что здесь нужно указать использование пространства имён System.Drawing поскольку необходимо получить доступ к структуре Color (пространство имен System.Drawing будет рассмотрено в следующей главе).
using System;
using System.Windows.Forms;
using System.Drawing;
namespace MyWindowsApp {
public class MainWindow: Form {
publiс MainWindow {
// Использование наследуемых свойств для установки
// характеристик интерфейса пользователя.
Text = "Моя фантастическая форма";
Height = 300;
Width = 500;
BackColor = Color.LemonChiffon;
Cursor = Cursors.Hand;
}
}
public static class Program {
static void Main(string[] args) {
Application.Run(new MainWindow);
}
}
}
Скомпилируйте это приложение в его текущем виде, просто чтобы проверить что вы не допустили никаких опечаток.
csc /target:winexe *.cs
Ответ на события MouseMove
Далее, мы должны обработать событие MouseMove. Целью является отображение текущих координат (x, у) указателя в области заголовка формы. Все связанные с состоянием мыши события (MouseMove. MouseUp и т.д.) работают в паре с делегатом MouseEventHandler, способным вызвать любой метод, соответствующий следующей сигнатуре.
void MyMouseHandler(object sender, MouseEventArgs e);
Поступающая на вход структура MouseEventArgs расширяет общий базовый класс EventArgs путем добавления целого ряда членов, специально предназначенных для обработки действий мыши (табл. 19.6).
Таблица 19.6. Свойства типа MouseEventArgs