У меня есть элемент управления, производный от UserControl
. Когда пользователь перемещает колесико мыши, я хочу зафиксировать это и отреагировать на это.
Я пробовал использовать событие Scroll
, но оно никогда не срабатывает, как я предполагаю, потому что мой элемент управления не имеет (или не нуждается) в полосе прокрутки.
Я не могу найти событие MouseWheel
в конструкторе Windows Forms, хотя в документации предлагается, чтобы он был частью каждого производного элемента Control
. Опять же, документы < / a> предполагаем, что UserControl
является производным, поэтому он должен поддерживать событие.
Что мне не хватает?
2 ответа
В случае, если кто-то еще столкнется с этим, в конце я просто добавил некоторую обработку в родительский элемент управления для вызова функций в пользовательском элементе управления:
Form1(void)
{
InitializeComponent();
MouseWheel += gcnew MouseEventHandler(this, &Form1::MouseWheelHandler);
}
void MouseWheelHandler(Object^ sender, MouseEventArgs^ e)
{
m_myUserControl->MouseWheel(e->Delta);
}
Решением для получения событий мыши из пользовательских элементов управления является установка фона элемента управления. Каждой панели (сетка, холст и т. Д.) Нужен цвет фона для обработки событий мыши.
Так что просто добавьте прозрачный фон к своему элементу управления, и события прокрутки будут захвачены.
Background="Transparent"
Похожие вопросы
Новые вопросы
.net
НЕ используйте для вопросов о .NET Core - используйте вместо этого [.net-core]. .NET Framework - это программная среда, предназначенная главным образом для операционной системы Microsoft Windows. Он включает в себя реализацию библиотеки базовых классов, общеязыковой среды выполнения (обычно называемой CLR), общей системы типов (обычно называемой CTS) и динамической среды исполнения. Он поддерживает множество языков программирования, включая C #, VB.NET, F # и C ++ / CLI.