防止文本框捕获 MouseWheel 事件

Preventing a textbox from capturing the MouseWheel event

我有一个 textbox,当我用鼠标滚轮向下滚动表单并用鼠标点击文本框时,它停止滚动。

有没有办法避免这种情况?

如果您只想要视觉部分,请将文本框的 属性 "Cursor" 更改为 "Arrow"

如果您不希望 TextBox 成为焦点,您有几个解决方案

  1. ReadOnly 属性 设置为 True

没有人能够在您的 TextBox 中输入文本,除非您以编程方式输入。但是,仍然可以单击它,如果单击它,您将看到闪烁的光标(不知道英文名称)。当移动器悬停时,它会变成一个光标。

这意味着这个选项允许焦点在控件上,但是不能输入数据。

  1. Enabled 属性 设置为 False

同样,将无法输入任何数据。此外,将无法点击它,如果将其悬停,光标也不会改变。

这意味着此选项不允许将焦点放在控件上。

  1. 改为Label

如果没有人能够在您的 TextBox 中插入数据,也许最好将 Label 放在那里。如果您选择选项 1 或 2,那是因为在某些时候您可能允许用户更改其中的文本。但是如果只会被程序修改,Label就够了。

永远不允许焦点在标签上。

好的,如果我没理解错的话,您正在搜索的是在传递 TextBox 时保持鼠标滚动。对吗?

我认为有一种方法可以实现这一点。但是,此代码尚未经过测试,因此如果有效,请通知我。

Public Sub New()
    InitializeComponents()
    'Other inits here
    AddHandler TextBox1.MouseWheel, AddressOf TBMouseWheel
End Sub

Private Sub TBMouseWheel(sender As Object, e As MouseEventArgs)
    Me.OnMouseWheel(e)
End Sub

这样,当您的文本框捕获 MouseWheel 事件时,它会传递到将处理它的表单(我认为)。抱歉,我现在没有机会对其进行测试,但我相信这应该可以解决问题。