如何使 WPF 文本框使用密码字符?

Posted

技术标签:

【中文标题】如何使 WPF 文本框使用密码字符?【英文标题】:How to make a WPF TextBox use password characters? 【发布时间】:2011-04-17 02:31:44 【问题描述】:

我需要动态设置它..

我可以将密码框设为正常文本吗? 我的意思是-用户可以看到他输入的文本。???

它的原因-> 我需要对“密码会话”和“输入项目计数”会话使用相同的控制..??

【问题讨论】:

那么,在阅读了所有答案(实际上是XY-problem-tailored)之后,并且冒着重复问题的风险,如何让 WPF 文本框使用密码字符 【参考方案1】:

你必须使用PasswordBox 而不是TextBox

<PasswordBox Height="42" Width="200"  Margin="22,28,28,0" 
         Name="passwordBox1" VerticalAlignment="Top" 
         Background="LightBlue" Foreground="DarkBlue" 
         MaxLength="25" PasswordChar="*" 
         />

【讨论】:

【参考方案2】:

WPF 中有一个专为密码设计的新控件,称为PasswordBox。如果您需要屏蔽输入,则应该使用它而不是 TextBox

Here's a brief article about it. 要检索输入的值,请使用 Password 属性。

编辑:您几乎提出了一个新问题 - 如何取消隐藏 WPF PasswordBox 中的文本?据我所知,您不能,尽管您当然可以通过从 PasswordBox.Password 获取密码值来按需将其显示在常规 TextBox 中

如果没有自定义帮助程序类,就无法将数据绑定到 PasswordBox - 尽管这会降低新的 PasswordBox 控件 (as described here) 提供的更高安全性。考虑到这一点,this article includes a section on creating a helper class 允许您将数据绑定到PasswordBox

【讨论】:

【参考方案3】:

或使用“密码字体”。一种将所有字符显示为点的字体。记得禁用剪切和复制剪贴板功能。

【讨论】:

你也可以添加一些链接吗?【参考方案4】:

还有PasswordBox 的自定义实现,您可以根据需要进行更改,请参阅 this article。您还可以扩展 PasswordBox 无法实现的功能,因为它是一个密封类。

【讨论】:

以上是关于如何使 WPF 文本框使用密码字符?的主要内容,如果未能解决你的问题,请参考以下文章

C#中在文本框中输入的字符串怎么让它隐藏

WPF 文本框 RaiseEvent

在每个字符输入后使密码文本框值可见

wpf 焦点定位到 文本框开头? 2:如何按Tab,让焦点不进入第3个文本框,意思是在前两个文本框中切换

WPF 之 文本框及密码框添加水印效果

如何在 WPF 文本框中选择多个文本段?