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

Добавление события. Код обработчика события.

  1. Скомпонуйте и выполните программы (стартовые системы) на С# и C++, находящиеся в папках VsForm\Stepl и VsFormPortXStepl, и убедитесь, что они работают одинаково. Это полностью статические приложения, – они просто отображают строку приветствия в фиксированной позиции.
  2. Откройте форму проекта VsForm\Stepl в окне конструктора (Design window) и щелкните на кнопке Events (События) в окне Properties (Свойства).
  3. Найдите событие MouseDown (Кнопка мыши нажата), как на рис. 6.18.
  4. В окне Properties (Свойства) дважды щелкните на событии MouseDown (Кнопка мыши нажата). Автоматически будет сгенерирован код, который зарегистрирует делегата для события и образует скелет метода, связанного с делегатом.
private void InitializeComponent ()
{
this.MouseDown =
new System.WinForms.MouseEventHandler
(this.Forml_MouseDown);
}
protected void Forml_MouseDown (object sender,
System.WinForms.MouseEventArgs e)
{
}

Иллюстрированный самоучитель по Architecture .NET › Создание графических пользовательских интерфейсов › Добавление события. Код обработчика события.
Рис. 6.18. Добавление события с помощью кнопки Events (События)

Код обработчика события

  1. Чтобы установить координаты строки приветствия, добавьте код в обработчик события мыши (нажатие кнопки мыши). Не забудьте после этого вызвать метод Invalidate (Считать недействительным).
protected void Forml_MouseDown (object sender,
System WinForms.MouseEventArgs e)
{
x = e X;
у = e Y;
Invalidate();
}
  1. Скомпонуйте и выполните проект. Теперь по щелчку мыши (любой кнопкой) приветствие должно перемещаться. Проект сейчас находится на шаге 2 разработки и соответствует проекту, хранящемуся в папке VsForm\Step2.

Вместо того, чтобы переносить каждую строчку кода, созданного на С#, в файл Forml.cpp проекта VsForm\Step2, просто сделайте копию проекта VsFormPortXStepl, который уже получен с помощью переноса кода. Потом перенесите несколько строчек кода, связанных с событием MouseDown (Кнопка мыши нажата) из VsForm\Step2.

void InitializeComponent()
{
MouseDown +=
new System::Windows::Forms:-MouseEventHandler
(this, Forml_MouseDown);
}
void Forml_MouseDown (Object *sender,
System::Windows::Forms::MouseEventArgs *e)
{
x = (float)e › X; // с плавающей точкой
у = (float)e › Y; // с плавающей точкой
Invalidate();
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.