【问题标题】:Toggle the masking and unmasking of a TextBox using a CheckBox使用 CheckBox 切换 TextBox 的屏蔽和取消屏蔽
【发布时间】:2015-06-09 15:31:45
【问题描述】:

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

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

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

【问题讨论】:

    标签: vb.net checkbox textbox masking


    【解决方案1】:

    docos 实际声明:

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

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

    在 VB.NET 中,最简单的方法是将 PasswordChar 设置为 vbNullChar

    【讨论】:

    • +1 啊,好点子。一开始我以为它是一个字符串,而不是一个字符。
    【解决方案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
    

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

    【讨论】:

      【解决方案3】:

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

      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 这样的字体,这不会有问题,因为所有字符宽度都是恒定的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-27
        • 1970-01-01
        • 2012-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多