我需要在数据网格视图中禁用鼠标滚轮(客户规范),目前我已经在派生的DataGridView类中尝试过
VerticleScrollBar.MouseWheel += WheelHandled;
MouseWheel += WheelHandled;
private void WheelHandled(object sender, MouseeventArgs e){
HandledMouseEventArgs mouseWheelEvent = e as HandledMouseEventArgs;
if(mouseWheelEvent != null){
mouseWheelEvent.Handled = true;
}
}
这阻止了滚轮在单元格内滚动,但如果光标在滚动条上,鼠标滚轮仍然可以工作,我不知道为什么。
1条答案
按热度按时间4ioopgfo1#
如果不捕获受保护的
VScrollBar
的WM_MOUSEWHEEL
消息,就太晚了。在您的实现中,您可以订阅VScrollBar.MouseWheel
事件,如下所示:或者在你的派生类中:
然而,处理事件设置
(e as HandledMouseEventArgs).Handled = true;
没有效果。同样,这样做已经太晚了。您需要在正确的时间采取行动。为此,您必须创建自定义DataGridView
并将滚动条的本机窗口子类化,以防止处理WM_MOUSEWHEEL
消息。