【问题标题】:How to unmask a password textbox?如何取消屏蔽密码文本框?
【发布时间】:2020-04-07 14:04:41
【问题描述】:

我想用复选框元素切换文本框的密码可见性。所以每当状态改变时,我想用密码字符或纯文本显示密码。

使用 C#,我可以简单地为星号分配密码字符

textBox.PasswordChar = '*';

对于纯文本

textBox.PasswordChar = '\0';

使用 VB 我目前有这个示例代码

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
    If CheckBox1.Checked Then
        TextBox1.PasswordChar = '\0'
        CheckBox1.Text = "Hide password"
    Else
        TextBox1.PasswordChar = '*'
        CheckBox1.Text = "Show password"
    End If
End Sub

在这里找到了一些信息

How do you declare a Char literal in Visual Basic .NET?

我知道' 被视为注释,所以我必须使用双引号。我可以将'*' 更新为"*"C,但'\0' 的等价物是什么?

解开文本框密码的正确方法是什么?

【问题讨论】:

  • 您可以使用Nothing 或更好地使用UseSystemPasswordChar 属性。
  • 您可以设置TextBox1.PasswordChar = Char.MinValue。如果要设置默认字符,请使用TextBox1.PasswordChar = ChrW(&H25CF)

标签: vb.net winforms


【解决方案1】:

您可以使用Nothing 关键字来设置预期类型的​​默认值(在这种情况下为Char):

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
    TextBox1.PasswordChar = If(CheckBox1.Checked, Nothing, "*"c)
End Sub

更好的方法是使用UseSystemPasswordChar 属性而不是PasswordChar。这使密码掩码看起来“更标准”。当然,除非您想使用自定义字符。这是一个例子:

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
    TextBox1.UseSystemPasswordChar = Not CheckBox1.Checked
End Sub

【讨论】:

  • 请注意,在运行时设置UseSystemPasswordChar,TextBox 需要重新创建句柄。它可能会产生后果。
  • @Jimi 感谢您的提示 :) 我实际上并不知道。文档中甚至都没有提到它。您认为这可能会产生什么样的后果?
  • 查看RecreateHandleCore() 中的代码和注释(cmets)以及我发布该评论(关于问题)的原因:PasswordProtect
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-11
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 2012-06-27
相关资源
最近更新 更多