我有一个基于ScrollableControl的自定义ZoomBox控件,它通过AutoscrollMinSize属性控制其滚动条。 我希望能够处理WM_MOUSEWHEEL事件来调整控件的缩放。 我做了一些必要的步骤,通过在父窗体上过滤它们来确保控件接收鼠标事件,即使它不在焦点上。
似乎事件只有在控件没有活动滚动条时才会到达OnMouseWheel方法。如果是这样,似乎鼠标滚轮事件被重定向到处理它们的滚动条(通过滚动)。
我希望滚动条在那里,但只能以传统的方式控制,即通过拖动滑块或点击箭头等并自己处理滚轮。是否有可能实现这一目标?
答案 0 :(得分:2)
继承有问题的ScrollableControl
并覆盖OnMouseWheel()
。在该方法中,不要致电base.OnMouseWheel()
。
据我所知,如果滚动条存在,没有其他方法可以阻止ScrollableControl滚动。
副作用是您将不再获得MouseWheel事件。修复这是另一个问题。从概念上讲,您想要调用base.base.OnMouseWheel()。