Добавление пользовательского поведения интерфейса для элементов управления через компонент - PullRequest
0 голосов
/ 03 апреля 2012

В моем проекте у меня есть несколько элементов управления, которые отображают набор точек на экране.Я хотел бы предоставить функциональность «выбора лассо» для всех этих элементов управления.Для этого я написал класс под названием «Лассо», который отслеживает движения мыши, отображает лассо, вызывает событие, когда лассо закрыто, и т. Д. Пока все хорошо.Но чтобы использовать лассо, я должен написать такой код:

public partial class MyControl : UserControl {

    private Lasso lasso;

    public MyControl() {
        InitializeComponent();

        lasso = new Lasso();
        lasso.HookEvents(this);
    }
}

Метод "lasso.HookEvents" заботится о подключении лассо к событиям мыши для управления хостом.

Что я хотел бы сделать, так это каким-то образом предоставить людям возможность просто перетаскивать компонент «Лассо» из панели инструментов на свой UserControl или Form во время разработки и не беспокоиться о написании какого-либо кода самостоятельно;лассо должно волшебным образом «просто работать».Есть способ сделать это ?Я пытался расширить свой класс Лассо из Компонента, но я не мог понять, как заставить конструктор автоматически генерировать вызов lasso.HookEvents (this).

1 Ответ

0 голосов
/ 03 апреля 2012

Если возможно, просто запишите события мыши в объекте Lasso. Если это невозможно или не работает: в вашем классе Lasso добавьте обработчик к событию Loaded и в обработчике запустите this.HookEvents(this.Parent);.

...