【问题标题】:How can I unmask password text box and mask it back to password?如何取消屏蔽密码文本框并将其屏蔽回密码?
【发布时间】:2011-11-18 16:38:50
【问题描述】:

密码文本框如何设置为:

password_txtBox.PasswordChar ="*"

被取消屏蔽(从复选框)然后再次屏蔽
不会丢失文本框内的字符串

【问题讨论】:

标签: c# textbox


【解决方案1】:

对于winforms

private void checkBoxShowPassword_CheckedChanged(object sender, EventArgs e) {
   textBoxPassword.PasswordChar = checkBoxShowPassword.Checked ? '\0' : '*';
}

【讨论】:

  • "PasswordChar" 用于winform应用程序如何用C#在asp.net中用餐
  • 要匹配用于在 Windows 中屏蔽密码的字符,请使用 或任何您喜欢的字符: @ 987654327@
【解决方案2】:

只需将该属性设置为 '\0'(这是默认值)即可不屏蔽字符。

来源:http://msdn.microsoft.com/en-us/library/system.windows.forms.textbox.passwordchar.aspx

注意:请注意“\0”与“0”不同。第一个是空字符,白色的'0'是会显示为0的字符。

【讨论】:

  • 文档有点不具体。澄清“字符值”可能会有所帮助,它们的意思是“\ 0”,而不是“0”。因此:password_txtBox.PasswordChar = '\0'。否则,你会得到零作为掩码字符。
【解决方案3】:

如果您使用的是拨动开关,那么

private void toggleSwitch1_Toggled(object sender, EventArgs e)
{
    if (toggleSwitch1.IsOn)
    {
        string a= textBox2.Text;
        textBox2.PasswordChar = '\0';
    }
    else
    {
        textBox2.PasswordChar = '*';
    }
}

此处'\0' 将显示以纯文本格式提交的密码

【讨论】:

  • 不适合我:(
【解决方案4】:

显示和隐藏密码的最简单方法之一是在密码文本框中使用单选按钮

单选按钮的属性应该是这样的:

this.radioBtn_ShowHidePassword.AutoCheck = false;    

然后必须手动处理点击活动,使其在“点击”事件中与当前状态相反

private void radioBtn_ShowHidePassword_Click(object sender, EventArgs e)
{
 radioBtn_ShowHidePassword.Checked = (! radioBtn_ShowHidePassword.Checked);
}

最后是显示和隐藏密码的最简单方法

private void radioBtn_ShowHidePassword_CheckedChanged(object sender, EventArgs e)
{
   txtBoxPassword.PasswordChar = radioBtn_ShowHidePassword.Checked ? '\0' : '*';
   // here we can even include the code for changing the default picture of button to two different
   //representation like closed eye and opened eye which resembles Windows login
}

【讨论】:

    【解决方案5】:

    我这样做是为了简要显示密码 (我在编码方面很新,所以如果这是一个不好的做法,欢迎反馈)

     private void buttonShowPassword_MouseDown(object sender, MouseEventArgs e)
        {
            TextBoxPassword.Properties.PasswordChar =(char)0;
        }
    
        private void buttonShowPassword_MouseUp(object sender, MouseEventArgs e)
        {
            TextBoxPassword.Properties.PasswordChar = '*';
        }
    

    【讨论】:

      【解决方案6】:

      txtPassword 是密码文本框,chkSeePassword 是显示密码复选框。现在在复选框的 CheckedChanged 事件中添加一些代码

      private void chkSeePassword_CheckedChanged(object sender, EventArgs e)
      {
              txtPassword.UseSystemPasswordChar = !chkSeePassword.Checked;
      }
      

      【讨论】:

        【解决方案7】:
        if(TokenTextBox.PasswordChar == (char)0)
        {
           TokenTextBox.PasswordChar = '•';
        }
        else
        {
           TokenTextBox.PasswordChar = (char)0;
        }
        

        【讨论】:

          【解决方案8】:

          用这个

          private void checkBox1_CheckedChanged(object sender, EventArgs e)
              {
                  textBox2.PasswordChar = default(char);
              }
          

          【讨论】:

            【解决方案9】:

            VB.Net版本是

            Private Sub checkBoxShowPassword_CheckedChanged(sender As Object, e As System.EventArgs) Handles checkBoxShowPassword.CheckedChanged
                textBoxPassword.PasswordChar = If(checkBoxShowPassword.Checked, ControlChars.NullChar, "*"C)
            End Sub
            

            Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
                If CheckBox1.Checked Then
                    Me.txt_password.PasswordChar = "*"c
                Else
                    Me.txt_password.PasswordChar = ControlChars.NullChar
                End If
            End Sub
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-09-11
              • 1970-01-01
              • 1970-01-01
              • 2011-02-01
              • 1970-01-01
              • 2016-01-21
              • 2016-10-30
              • 2011-06-04
              相关资源
              最近更新 更多