【问题标题】:How to disable system's caps-lock notification on Textbox [duplicate]如何在文本框上禁用系统的大写锁定通知[重复]
【发布时间】:2014-08-23 09:11:05
【问题描述】:

在 Winforms 文本框中,我定义了新的 ToolTip 并对其进行了配置。但是,当大写锁定打开时,会显示两个工具提示。其中一个是我的,另一个是系统的默认工具提示通知。我只想显示我的工具提示。我想禁用系统的工具提示。如何禁用它?

【问题讨论】:

  • 该系统的大写锁定是否出现在密码文本框中?
  • 是的。 (我在 VB.NET 中)我读过它,但它是用 C# 或 C++ 编写的(我不知道)而且我不明白。 stackoverflow.com/questions/17677123/…
  • 而且它不是真正的工具提示,它是一个显示特殊工具提示图像的图片框(我是法国人,如果不是不可理解的话,请原谅......)
  • 能否提供一些代码?
  • @Hoh 没有任何代码。我只想显示带有工具提示的图片框。我想禁用系统提示...

标签: .net vb.net winforms textbox tooltip


【解决方案1】:

我找到了答案here,并将代码翻译成VB.NET:

Public Class CustomMaskedTextBox
    Inherits MaskedTextBox

    Private m_DisableBalloonTips As Boolean
    Public Property DisableBalloonTips() As Boolean
        Get
            Return m_DisableBalloonTips
        End Get
        Set
            m_DisableBalloonTips = Value
        End Set
    End Property


    Protected Overrides Sub WndProc(ByRef m As Message)
        Private Const EM_SHOWBALLOONTIP As Integer = &H1503
        If m.Msg = EM_SHOWBALLOONTIP AndAlso DisableBalloonTips Then
            m.Result = IntPtr.Zero
            Return
        End If
        MyBase.WndProc(m)
    End Sub
End Class

【讨论】:

  • 我正在测试这段代码,但你能帮我解决一个错误:Impossible to convert an Integer in System.IntPtr On line 16 (--> m.Result = DirectCast(0, IntPtr))
  • 编辑:我已经测试了没有这一行的代码,它可以工作!谢谢,但对其他人来说重要吗??
  • @Drarig 是的,没有它也可以。诀窍是在收到EM_SHOWBALLOONTIP 消息时避免调用基类的WndProc,这会阻止消息被处理。如果您想返回零结果(这表明消息已成功处理,但您只是没有任何事情),那么您可以使用IntPtr.Zero 或@987654327 @。 DirectCast 不适用于 IntPtr 等对象类型。
猜你喜欢
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 2021-02-14
  • 1970-01-01
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
  • 2013-04-07
相关资源
最近更新 更多