如何在 UserControl 中捕获 MouseWheel 事件?
How do I capture MouseWheel events in a UserControl?
我有一个 UserControl
派生控件。当用户移动鼠标滚轮时,我想捕捉并响应它。
我试过使用 Scroll
事件,但似乎从未触发过,我猜是因为我的控件没有(或不需要)滚动条。
我在 Windows Forms Designer 中找不到 MouseWheel
事件,尽管 the docs suggest it should be part of every Control
derived element. Again, the docs 建议 UserControl
是派生的,因此它应该支持该事件。
我错过了什么?
以防其他人遇到这个问题,最后我只是在
在用户控件中调用功能的父控件:
Form1(void)
{
InitializeComponent();
MouseWheel += gcnew MouseEventHandler(this, &Form1::MouseWheelHandler);
}
void MouseWheelHandler(Object^ sender, MouseEventArgs^ e)
{
m_myUserControl->MouseWheel(e->Delta);
}
从 UserControls 获取鼠标事件的一种解决方案是设置控件的背景。每个面板(网格、Canvas、...)都需要一个背景色来处理鼠标事件。
所以只要给你的控件添加一个透明背景,滚动事件就会被捕获
Background="Transparent"
我有一个 UserControl
派生控件。当用户移动鼠标滚轮时,我想捕捉并响应它。
我试过使用 Scroll
事件,但似乎从未触发过,我猜是因为我的控件没有(或不需要)滚动条。
我在 Windows Forms Designer 中找不到 MouseWheel
事件,尽管 the docs suggest it should be part of every Control
derived element. Again, the docs 建议 UserControl
是派生的,因此它应该支持该事件。
我错过了什么?
以防其他人遇到这个问题,最后我只是在 在用户控件中调用功能的父控件:
Form1(void)
{
InitializeComponent();
MouseWheel += gcnew MouseEventHandler(this, &Form1::MouseWheelHandler);
}
void MouseWheelHandler(Object^ sender, MouseEventArgs^ e)
{
m_myUserControl->MouseWheel(e->Delta);
}
从 UserControls 获取鼠标事件的一种解决方案是设置控件的背景。每个面板(网格、Canvas、...)都需要一个背景色来处理鼠标事件。
所以只要给你的控件添加一个透明背景,滚动事件就会被捕获
Background="Transparent"