2

我有一个TextBox,它有一个CheckBox操作来掩盖包含的文本。这适用于以下代码:

Private Sub CheckBox2_Checked(ByVal sender As Object, ByVal e As EventArgs) Handles CheckBox2.CheckedChanged
    TextBox14.PasswordChar = "*"
End Sub

它运作良好,但我也希望能够取消选中CheckBox然后返回可识别的文本。我怎样才能做到这一点?

4

3 回答 3

2

docos 实际上是这样说的:

用于屏蔽在单行 TextBox 控件中输入的字符的字符。如果您不希望控件在键入字符时屏蔽字符,请将此属性的值设置为 0(字符值)。默认情况下等于 0(字符值)。

在这里找到:http: //msdn.microsoft.com/en-us/library/system.windows.forms.textbox.passwordchar (v=vs.110).aspx

在 VB.NET 中,最简单的方法是设置PasswordCharvbNullChar.

于 2013-01-22T14:39:43.213 回答
2

您可以通过简单地将PasswordChar属性设置回空字符来做到这一点,如下所示:

Private Sub CheckBox2_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles CheckBox2.CheckedChanged
    If CheckBox2.Checked Then
        TextBox14.PasswordChar = "*"c
    Else
        TextBox14.PasswordChar = ControlChars.NullChar
    End If
End Sub

CheckedChanged每次Checked属性更改时都会发生该事件。因此,当用户取消选中 时CheckBox,它也会引发该事件,因此您需要检查该控件当前是否被选中。

于 2013-01-22T14:35:00.350 回答
0

我发现仅仅切换密码字符是不够的。就我而言,我正在掩盖一个连接字符串。由于我的文本中缺少空格,我来回遇到了问题。我的文字会被截断并且没有正确换行。

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs)
    Dim beforeText As String = TextBox1.Text

    TextBox1.Text = ""
    TextBox1.PasswordChar = IIf(CheckBox1.Checked, Convert.ToChar(0), "*"c)
    TextBox1.Text = beforeText
End Sub

我想如果你使用像 Console 这样的字体,这不会是一个问题,因为所有字符宽度都是恒定的。

于 2014-10-28T14:27:18.490 回答