我有一个UserControl
派生控件。当用户移动鼠标滚轮时,我想抓住并回复它。
我已经尝试过使用Scroll
事件,但这似乎从来没有引发我猜测是因为我的控件没有(或不需要)滚动条。
我在Windows窗体设计器中找不到MouseWheel
事件,尽管the docs表明它应该是每个Control
派生元素的一部分。同样,the docs建议UserControl
是衍生品,因此它应该支持该事件。
我错过了什么?
答案 0 :(得分:4)
如果其他人都面临这种情况,最后我只是添加了一些处理 父控件在用户控件中调用功能:
Form1(void)
{
InitializeComponent();
MouseWheel += gcnew MouseEventHandler(this, &Form1::MouseWheelHandler);
}
void MouseWheelHandler(Object^ sender, MouseEventArgs^ e)
{
m_myUserControl->MouseWheel(e->Delta);
}
答案 1 :(得分:0)
一种从UserControls获取鼠标事件的解决方案是设置控件的Background。每个面板(网格,画布等)都需要Backgroundcolor来处理鼠标事件。
因此只需在控件中添加透明背景,即可捕获滚动事件
Background="Transparent"