【问题标题】:Preventing a textbox from capturing the MouseWheel event防止文本框捕获 MouseWheel 事件
【发布时间】:2016-05-24 10:36:20
【问题描述】:

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

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

【问题讨论】:

  • 鼠标指针通常不会改变文本编辑器,您肯定可以更好地表达吗?使用 Label 而不是 TextBox 将是避免混淆用户的最明显方法..

标签: vb.net mousewheel


【解决方案1】:

好的,如果我理解正确,您正在搜索的是在传递您的 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 事件时,它会在表单上传递,它会处理它(我认为)。抱歉,我现在没有机会测试它,但我相信这应该可以解决问题。

【讨论】:

    【解决方案2】:

    如果你只想要视觉部分,将文本框的“光标”属性更改为“箭头”

    【讨论】:

    • 不,我需要的是避免专注
    • 我认为当您将鼠标悬停在控件上时焦点通常不会改变。
    【解决方案3】:

    如果您不希望 TextBox 被关注,您有几个解决方案

    1. ReadOnly 属性设置为True

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

    这意味着该选项允许将焦点放在控件上,但无法输入数据。

    1. Enabled 属性设置为False

    同样,无法输入任何数据。另外,无法点击,鼠标悬停也不会改变。

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

    1. 请改用Label

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

    绝对不允许将焦点放在标签上。

    【讨论】:

    • 谢谢你的答案。但我的问题是当我的光标触摸文本框时,我的鼠标滚轮停止了。属性 enabled=false 它可以工作,但我不能允许这个解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    相关资源
    最近更新 更多