如何检测鼠标滚轮方向(向前或向后)

时间:2018-03-28 08:02:56

标签: c# winforms scroll

我需要知道如何在MouseWheel事件上确定滚动是向前还是向后(不是垂直或水平)。

panel1.MouseWheel += ZoomIn

public void ZoomIn(object sender, EventArgs e)
{
     // Need to know whether the wheel is scrolled forwards or backwards
}

2 个答案:

答案 0 :(得分:6)

而不是EventArgs使用公开Delta属性的MouseEventArgs。 向下滚动为负,向上滚动为正。

panel1.MouseWheel += ZoomIn;

public void ZoomIn(object sender, MouseEventArgs e)
{
    if(e.Delta > 0)
    {
        // The user scrolled up.
    }
    else
    {
        // The user scrolled down.
    }
}

答案 1 :(得分:3)

MSDN

  

处理MouseWheel事件时,遵循与鼠标滚轮关联的用户界面(UI)标准非常重要。 MouseEventArgs.Delta属性值指示鼠标滚轮的移动量。当累积增量为正或负120时,UI应滚动.UI应滚动SystemInformation.MouseWheelScrollLines属性为每个达到的增量值返回的逻辑行数。您还可以以小于120个单位的增量更平滑地滚动,但是比率应该保持不变,即SystemInformation.MouseWheelScrollLines线条每120个轮子移动单位滚动。

因此,您希望将处理程序中e的类型更改为MouseEventArgs(或引入强制转换),然后使用其Delta属性