从文本框中显示密码

3

我已经创建了一个带有 PasswordChar = '*'; 的文本框控件。 现在,如果用户勾选复选框,我想显示密码。 奇怪的是它不起作用,我无法看到我的密码。

这是我的代码:

if (DisplayPasswordCheckBox.Checked)
     PasswordTB.PasswordChar = char.Parse("\0");
else
     PasswordTB.PasswordChar = char.Parse("*");

有任何想法我在这里做错了什么吗?
编辑:如果您正在使用UseSystemPasswordChar = true,在更改密码字符之前将其关闭以获取屏幕上的结果。

尝试将 char.Parse("\0"); 替换为 string.Empty; - Mo Patel
它说无法将类型为“string”的值隐式转换为类型为“char”。 - user3745020
当然,PaswwordChar应该是char类型而不是string类型。这是我的错误... @Christos的答案应该可以正常工作。 - Mo Patel
你是否为你的复选框添加了事件监听器? - Loathing
3个回答

4
你应该将代码更改为以下内容:
if (DisplayPasswordCheckBox.Checked)
    PasswordTB.PasswordChar = '\0';
else
    PasswordTB.PasswordChar = '*';

你不需要解析任何东西,也就是说你不需要使用 char.Parse() 方法。
要了解有关名为 PasswordChar 的属性的更多信息,请查看此处

它说无法隐式转换类型“string”为“char”。 - user3745020
请尝试更新后的版本并让我知道。之前我的错误非常抱歉。谢谢! - Christos
1
我的错误,即使我的代码是有效的,但我设置了PasswordTB.UseSystemPasswordChar = true;,这就是为什么这段代码不起作用的原因。您提供的MSDN页面链接说明UseSystemPasswordChar属性优先于PasswordChar属性。 - user3745020
@user3745020 嗯,有时候我们会因为这种类型的错误而陷入麻烦。无论如何,重要的是下次你不会再遇到类似的问题了。这是你经验的积累。然而,我很高兴至少能以这种方式帮助你。 - Christos

2

来自msdn:

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

来源:msdn

因此,解决方案是

if (DisplayPasswordCheckBox.Checked)
     PasswordTB.PasswordChar = '\0'; //msdn says: 0 as character value.
else
     PasswordTB.PasswordChar = '*';

其他解决方案:
PasswordTB.PasswordChar = (char)0;

0
试试这个,希望能有所帮助。
    if (DisplayPasswordCheckBox.Checked)
        PasswordTB.PasswordChar = '\0';
    else
        PasswordTB.PasswordChar = char.Parse("*");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接