如何防止鼠标滚轮在没有过载的情况下递增数字版本?

时间:2017-02-01 22:17:11

标签: vb.net

如何防止鼠标滚轮在没有过载的情况下递增数字注册?

我以前继承了numericupdwon以使用空事件重载MouseWheel事件。这工作了一段时间,但是当我切换到x64使得整个继承类定期显示未找到时发生了一些事情。不确定,因为即使我切换回x86,它仍然是一个问题。

3 个答案:

答案 0 :(得分:1)

这对我有用..

Private Sub NumericUpDown1_MouseWheel(sender As Object, e As MouseEventArgs) Handles NumericUpDown1.MouseWheel

    Dim MW As HandledMouseEventArgs = CType(e, HandledMouseEventArgs)
    MW.Handled = True

End Sub

尽管HandledMouseEventArgs用法确实看起来很奇怪..但它确实有效。

https://msdn.microsoft.com/en-us/library/system.windows.forms.handledmouseeventargs(v=vs.110).aspx

答案 1 :(得分:0)

我想出了一个不同的解决方案,使用以下代码来阻止增量

Private Sub nup_cores_MouseWheel(sender As Object, e As MouseEventArgs) Handles nup_cores.MouseWheel
    nup_cores.Increment = 0
End Sub

然后改回来。在数字注释的特定情况下,光标闪烁似乎触发了gotfocus。使用短持续时间计时器可以应用相同的原理

Private Sub nup_cores_GotFocus(sender As Object, e As EventArgs) Handles nup_cores.GotFocus
    nup_cores.Increment = 1
End Sub

答案 2 :(得分:0)

对于C#: 由于某些原因,MouseWheel不会显示在GUI的事件列表中。因此,我不得不以编程方式将事件添加到表单加载中。在MouseWheel事件中,我所做的事情与上面选择的答案相似(但有一点不同)。

private void Form1_Load(object sender, EventArgs e)
{
    numericUpDownX.MouseWheel += new MouseEventHandler(handle_MouseWheel);
}

void handle_MouseWheel(object sender, MouseEventArgs e)
{
    ((HandledMouseEventArgs)e).Handled = true;
}