使用CheckBox切换TextBox的屏蔽和取消屏蔽

时间:2013-01-22 14:31:16

标签: vb.net checkbox textbox masking

我有TextBox,其CheckBox操作可以屏蔽包含的文本。这适用于以下代码:

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

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

3 个答案:

答案 0 :(得分: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时,它也会引发该事件,因此您需要检查当前是否检查该控件。

答案 1 :(得分:2)

docos实际上说:

  

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

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

在VB.NET中,通过将PasswordChar设置为vbNullChar可以轻松完成。

答案 2 :(得分: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这样的字体,这不会有问题,因为所有的字符宽度都是不变的。