Иллюстрированный самоучитель по Architecture .NET

Шаг 2: Обработка событий мыши. Шаг 2М: Несколько обработчиков для события.

Во время инициализации программа связывает метод Forml_MouseDown с событием MouseDown (Кнопка мыши нажата). Этот метод устанавливает координаты текста, х и у, равными координатам точки, в которой находился указатель в момент щелчка. Для того чтобы понять роль метода Invalidate (Считать недействительным), закомментируйте его и снова скомпонуйте код. Щелкните мышью, чтобы перенести текст. Что произойдет в результате? Приветствие останется на том же месте. Потом накройте окно приложения каким-либо другим окном, а потом снова откройте его. Теперь вы увидите, что строка перемещена.

Метод Invalidate (Считать недействительным) определен в базовом классе Control (Элемент управления). Существует несколько переопределенных версий этого метода. Каждая из них заставляет считать недействительной определенную область управляющего элемента и посылает элементу управления сообщение о перерисовывании. Метод, который не содержит параметров, заставляет считать недействительным весь управляющий элемент. Для того чтобы максимально уменьшить объем перерисовывания, в более сложном приложении можно ограничиться тем, что недействительным будет считаться прямоугольник.

Шаг 2М: Несколько обработчиков для события

На шаге 2М создания нашего приложения мы реализуем два разных обработчика события MouseDown (Кнопка мыши нажата). Второй обработчик по щелчку кнопкой мыши просто отображает окно сообщения.

//SimpleForm.срр – Шаг 2М
// Эта версия имеет два обработчика событий для MouseDown
_gc class Forml: public Form
// класс сборщика мусора Forml: общедоступная Форма
{
private: // частный
void InitializeComponent()
{
MouseDown += new MouseEventHandler
(this, Forml__MouseDown);
MouseDown += new MouseEventHandler
(this, ShowClick);
}
void Forml_MouseDown
(Object *pSender, MouseEventArgs *pmea)
{
x = pmea › X;
у = pmea › Y;
Invalidate(); }
void ShowClick (Object *pSender, MouseEventArgs *pmea)
{
MessageBox::Show("Mouse clicked!!'");
// "Мышь щелкнула!!! }
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.