使用Windows Forms.NET中的系统密码char将文本作为密码呈现

时间:2012-03-07 09:47:05

标签: winforms textbox render passwordbox

Windows窗体TextBox控件有两个属性PasswordCharUseSystemPasswordChar,用于控制键入TextBox的密码的模糊。我需要以相同的方式将指定的文本渲染到非TextBox图形表面上。

如果我们使用PasswordChar属性中的char,我可以计算指定字符串的长度并创建等效的文本表示,但UseSystemPasswordChar呢?我们如何检索有效的系统密码char?

或者可能有一个标志或一个现成的.NET方法或类,我们可以使用它来将指定的文本呈现为密码,而无需手动完成所有这些工作?

1 个答案:

答案 0 :(得分:0)

除非启用了视觉样式,否则Windows中的默认密码字符是星号,在这种情况下它是黑色圆圈。

您可以通过Application.RenderWithVisualStyles

检查是否启用了视觉样式

http://msdn.microsoft.com/en-us/library/windows/desktop/bb761594(v=vs.85).aspx

或者,你可以创建一个文本框,只需读取PasswordChar的值,虽然这感觉有点脏。

 char passwordChar = (new TextBox(){UseSystemPasswordChar = true}).PasswordChar;

此调用正在将EM_GETPASSWORDCHAR消息发送到windows api。