Перетаскивание объектов с помощью интерфейса drag-and-drop
Программа позволяет перемещать по форме некоторый объект (в нашем случае- прямоугольник). При входе указателя мыши в границы объекта он приобретает стандартный для операции перетаскаваняи вид – руку, при выходе за границы компонента указатель приобретает вид стрелки. Для изображения прямоугольника использован компонент panel.
По щелчку пользователя выполняется отрисовка точки на форме с указанием ее порядкового номера. Через два текстовых поля показываются координаты текущей точки.
Добавим две кнопки в коллекцию элементов управления формы.
Чтобы добавить визуальные элементы управления на форму понадобиться выполнить 3 действия:
1. Создать объекты button1 и button2 класса Button;
2. Настроить внешний вид элементов управления, например, задав им имя, высоту, ширину, координаты места расположения на форме и т.д.
3. Добавить контрол в коллекцию управляющих элементов.
Чтобы увидеть созданный control на форме, его надо поместить в коллекцию элементов управления, которая представлена свойством Controls.
Для добавления новых элементов в коллекцию используется метод Add.
Также опишем методы, которые будет выполнять какие-либо действия при нажатии кнопок. Пусть, например, щелчок по кнопке выводит на экран некоторую надпись. Поскольку такие методы отслеживают наступление некоторых событий (в нашем случае это нажатие кнопок) и затем каким-то образом обрабатывают их, они называются «обработчиками событий».
Так же нам понадобится привязать обработчики событий к соответствующим событиям, то есть к нажатию кнопок.
События в платформе .NET Framework основаны на модели делегата. Событие представляет собой сообщение, посылаемое объектом, чтобы сигнализировать о совершении какого-либо действия. Такое действие может быть вызвано действиями пользователя, например нажатием кнопки, или это действие может быть вызвано другой программной логикой, например изменением значения свойства. Объект, вызывающий событие, называется отправителем события.
Отправителю события не известен объект или метод, который будет получать (обрабатывать) сформированные отправителем события.
Делегат — это тип, который содержит ссылку на метод. Делегат объявлен с сигнатурой, которая указывает тип возвращаемого значения и параметры для методов на которые он ссылается, и может содержать ссылки только на методы, соответствующие подписи. Делегаты широко используются в платформе .NET Framework. В контексте событий, делегат-это посредник между источником событий и кодом, который обрабатывает событие. Вы связываете делегат с событием, путем включения типа делегата в объявление события.
Для поддержки сценариев событий используется делегат EventHandler (для всех событий, не содержащих данных события), или делегат EventHandler<TEventArgs> (для событий, которые включают данные о событии).