如何防止鼠标滚轮在没有过载的情况下递增数字注册?
我以前继承了numericupdwon以使用空事件重载MouseWheel事件。这工作了一段时间,但是当我切换到x64使得整个继承类定期显示未找到时发生了一些事情。不确定,因为即使我切换回x86,它仍然是一个问题。
答案 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;
}