У меня есть элемент управления, производный от UserControl. Когда пользователь перемещает колесико мыши, я хочу зафиксировать это и отреагировать на это.

Я пробовал использовать событие Scroll, но оно никогда не срабатывает, как я предполагаю, потому что мой элемент управления не имеет (или не нуждается) в полосе прокрутки.

Я не могу найти событие MouseWheel в конструкторе Windows Forms, хотя в документации предлагается, чтобы он был частью каждого производного элемента Control. Опять же, документы < / a> предполагаем, что UserControl является производным, поэтому он должен поддерживать событие.

Что мне не хватает?

4
Jon Cage 2 Мар 2015 в 16:46

2 ответа

Лучший ответ

В случае, если кто-то еще столкнется с этим, в конце я просто добавил некоторую обработку в родительский элемент управления для вызова функций в пользовательском элементе управления:

    Form1(void)
    {
        InitializeComponent();

        MouseWheel += gcnew MouseEventHandler(this, &Form1::MouseWheelHandler);
    }

    void MouseWheelHandler(Object^ sender, MouseEventArgs^ e)
    {
        m_myUserControl->MouseWheel(e->Delta);
    }
4
Jon Cage 3 Мар 2015 в 15:17

Решением для получения событий мыши из пользовательских элементов управления является установка фона элемента управления. Каждой панели (сетка, холст и т. Д.) Нужен цвет фона для обработки событий мыши.

Так что просто добавьте прозрачный фон к своему элементу управления, и события прокрутки будут захвачены.

Background="Transparent"
0
Apfelkuacha 16 Фев 2019 в 01:25