禁用密码 TextBox Caps-Lock 处于警告状态

Disable password TextBox Caps-Lock is On warning

我正在创建一个登录程序,但我遇到了这个问题,每次我单击此 "Show Password" 按钮并激活 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

当你这样做时:

[TextBox].UseSystemPasswordChar = [Bool Value]

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

一旦 TextBox.Text 值发生变化,就会为新的控制手柄显示气球工具提示:工具提示会堆积起来。

一个简单的解决方法 - 因为在这里禁用警告可能不是一个好的选择 - 是设置 PasswordChar property to Char.MinValue or Nothing in the MouseDown handler of your Show Password Button, then set it back to the previous value on MouseUp. This won't recreate the handle (.Net Source code) 并且可以禁用气球工具提示按 Caps-Lock键。

在设计器中将 UseSystemPasswordChar 设置为 False
Form.Loadtxt_Password.Enter 中:txt_Password.PasswordChar = ChrW(&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