WPF是否具有鼠标滚轮向上和向下滚动事件?

19

我查看了MSDN。与鼠标滚轮相关的事件只有一个选项——UIElement.MouseWheel。

我想要做的是监听鼠标滚轮向前(上)和向后(下)滚动事件。

注意:不是点击中间的滚轮按钮。

2个回答

40

不,只有一个事件。当您查看MouseWheelEventArgs类时,会发现有Delta属性。当向远离用户的方向旋转鼠标滚轮时,Delta为正;当向靠近用户的方向旋转鼠标滚轮时,Delta为负。


13

针对鼠标滚轮相关事件,只有一个选项可用

不,还有其他选项。

还有 PreviewMouseWheel类似于MouseWheel事件,但在键盘和鼠标处理中的不同位置起作用)。

预览还具有 Delta 属性,它可以确定滚轮旋转的方向。


示例

private void PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
    if (e.Delta > 0)
        DoActionUp();

    else if (e.Delta < 0)
        DoActionDown();
}

除了建议使用事件的预览版本(除非有充分的理由,否则通常不建议这样做),这与已接受的答案有何不同? - Joe White
我并没有说任何关于 WPF 下一个版本的事情。我问为什么你使用特殊用途的 PreviewMouseWheel 事件而不是普通的 MouseWheel 事件,并且为什么你认为它比被接受的答案更好。 - Joe White
1
我喜欢这个答案,因为它提供了代码。然而,你不需要使用PreviewMouseWheel,只需使用MouseWheel事件即可。 - NoobCoder
1
显然,如果控件使用滚轮(例如带有滚动条的控件),那么事件MouseWheel根本不会被调用,而事件PreviewMouseWheel则会被调用。 - magallanes
1
这是因为在WPF中路由事件的工作原理。它们使用路由策略,例如隧道式(PreviewNNNEvent)或冒泡式(NNNEvent): https://learn.microsoft.com/en-us/archive/msdn-magazine/2008/september/advanced-wpf-understanding-routed-events-and-commands-in-wpf - default
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接