【问题标题】:Disable password TextBox Caps-Lock is On warning禁用密码 TextBox Caps-Lock is On 警告
【发布时间】:2019-07-25 10:03:51
【问题描述】:

我正在创建一个登录的东西,我有这个问题,每次我点击这个“显示密码”按钮并且 Caps-Lock 被激活时,一个警告弹出并且不会离开(至少我认为不会,这对最终用户来说会更糟)

我想完全摆脱这个警告。

在将我的问题重定向到这个问题之前:
How to disable system's caps-lock notification on Textbox

我已经试过了。

Private Sub ShowPassword_MouseDown(sender As Object, e As MouseEventArgs) Handles ShowPassword.MouseDown
    If txt_Password.Text <> "" Then
        txt_Password.UseSystemPasswordChar = False

    End If
End Sub
Private Sub ShowPassword_MouseUp(sender As Object, e As MouseEventArgs) Handles ShowPassword.MouseUp
    If txt_Password.Text <> "" Then
        txt_Password.UseSystemPasswordChar = True
    End If
End Sub

警告应该消失。
希望这个问题可以帮助除我以外的其他人。 编辑:谢谢吉米。 :D

【问题讨论】:

  • 当你这样做时:UseSystemPasswordChar = [Bool Value],你重新创建了控件的句柄。将为新的控制手柄显示气球工具提示。
  • 如果重新启用 UseSystemPasswordChar,有没有办法摆脱里面的那个气球? @吉米
  • 嗯,有办法。我可以向您展示一种简单的实现方式。
  • @Jimi 那太棒了!

标签: vb.net winforms textbox tooltip capslock


【解决方案1】:

当你这样做时:

[TextBox].UseSystemPasswordChar = [Bool Value]

每次都会重新创建控件的句柄 (.Net source code)

TextBox.Text 值改变时,气球工具提示将显示新控制手柄:工具提示将堆积。

一个简单的解决方法 - 因为在这里禁用警告可能不是一个好的选择 - 是在您的 Show Password 按钮的 MouseDown 处理程序中将 PasswordChar 属性设置为 Char.MinValueNothing,然后设置它回到MouseUp 上的先前值。这不会重新创建句柄 (.Net Source code),并且可以按 Caps-Lock 键禁用气球工具提示。

在设计器中将UseSystemPasswordChar 设置为False
Form.Loadtxt_Password.Entertxt_Password.PasswordChar = ChrW(&amp;H25CF)

Private Sub ShowPassword_MouseDown(sender As Object, e As MouseEventArgs) Handles ShowPassword.MouseDown
    txt_Password.PasswordChar = Char.MinValue
End Sub

Private Sub ShowPassword_MouseUp(sender As Object, e As MouseEventArgs) Handles ShowPassword.MouseUp
    txt_Password.PasswordChar = ChrW(&H25CF)
End Sub

【讨论】:

  • 现在“显示密码”按钮不起作用:prnt.sc/ojul24 有或没有 if。
  • 按照程序说明进行操作。首先禁用UseSystemPasswordChar
  • UseSystemPasswordChar 在设计器中已设置为 false,但单击按钮时仍不显示密码。但我注意到气球工具提示的变化。
  • 那你没有正确实现它。使用您修改的代码更新您的问题。请记住在Form.Load 上设置txt_Password.PasswordChar = ChrW(&amp;H25CF),并查看您的按钮实际上触发了MouseDownMouseUp 事件,并引用了正确的TextBox 名称。
  • 没问题。当您修改现有代码时,这些事情总是会发生。重要的是你让它工作:)
猜你喜欢
  • 1970-01-01
  • 2012-11-07
  • 2010-09-24
  • 2023-01-03
  • 2019-01-10
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 2011-06-16
相关资源
最近更新 更多