有人知道在组合框或列表框这样的控件具有焦点时禁用鼠标滚轮的方法吗?对于我来说,combobox就是我所需要的答案。
我设置了一个组合框来触发SelectedIndexChanged上的SQL查询,当组合框具有焦点时,不小心滚动滚轮会导致大约六个SQL查询同时启动。
发布于 2010-06-04 01:46:09
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请注意,这也会禁用下拉列表中的滚轮。
发布于 2013-01-08 19:59:30
我发现了一个混合响应,将此代码放在MouseWheel事件中:
Dim mwe As HandledMouseEventArgs = DirectCast(e, HandledMouseEventArgs)
mwe.Handled = True就这样。如果您的项目处于高级状态,则不需要创建新类。
发布于 2010-06-04 01:45:26
如果你对控件进行子类化,这是可能的(为C#道歉)
public class NoScrollCombo : ComboBox
{
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
protected override void WndProc(ref Message m)
{
if (m.HWnd != this.Handle)
{
return;
}
if (m.Msg == 0x020A) // WM_MOUSEWHEEL
{
return;
}
base.WndProc(ref m);
}
}https://stackoverflow.com/questions/2968189
复制相似问题