我有TextBox
,其CheckBox
操作可以屏蔽包含的文本。这适用于以下代码:
Private Sub CheckBox2_Checked(ByVal sender As Object, ByVal e As EventArgs) Handles CheckBox2.CheckedChanged
TextBox14.PasswordChar = "*"
End Sub
效果很好,但我也希望能够取消选中CheckBox
,然后返回可识别的文本。我怎样才能做到这一点?
答案 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这样的字体,这不会有问题,因为所有的字符宽度都是不变的。