在combobox VB.NET中禁用鼠标滚轮

Cal*_*son 9 vb.net scroll combobox .net-3.0 mousewheel

当组合框或列表框等控件具有焦点时,是否有人知道禁用鼠标滚轮的方法?为了我的目的,组合框就是我需要的答案.

我有一个组合框设置为在SelectedIndexChanged上触发SQL查询,并且在组合框具有焦点时意外滚动滚轮导致大约六个SQL查询同时触发.

小智 14

我发现了混合响应,将此代码放在MouseWheel事件中:

Dim mwe As HandledMouseEventArgs = DirectCast(e, HandledMouseEventArgs)
mwe.Handled = True
Run Code Online (Sandbox Code Playgroud)

就这样.如果您的项目处于高级状态,则无需创建新类.


Han*_*ant 10

ComboBox控件不允许您轻松覆盖MouseWheel事件的行为.在项目中添加一个新类并粘贴下面显示的代码.编译.将新控件从工具箱顶部拖放到表单上.

Friend Class MyComboBox
    Inherits ComboBox

    Protected Overrides Sub OnMouseWheel(ByVal e As MouseEventArgs)
        Dim mwe As HandledMouseEventArgs = DirectCast(e, HandledMouseEventArgs)
        mwe.Handled = True
    End Sub
End Class
Run Code Online (Sandbox Code Playgroud)

请注意,这也会禁用下拉列表中的滚轮.

  • 您可以检查ComboBox的[DroppedDown](http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.droppeddown.aspx)属性,如果它是True,则不设置EventArg的处理属性.这将在显示下拉列表时保持滚轮工作. (2认同)