如何在运行时更改文本框的密码字符

时间:2014-10-12 23:32:57

标签: c# sql-server

我有我的登录表单,并且还有"更改密码"我的老师建议我,如果我在旧密码文本框中写下我的旧密码,我会看到这些字符,但如果我离开该文本框并转到新密码文本框,则字符应变成" *&# 34。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

首先,按照惯例,没有必要这样做。在移动设备上发生的唯一原因是,在手指较大的微型键盘上输入错误字符非常容易。有机会快速预览最后输入的角色是非常可取的。在WinForms应用程序上,我从来没有遇到过这种可用性。但是,如果你真的想这样做,你需要创建一个自定义控件。问题是PasswordChar属性将掩盖所有字符,而不仅仅是最后一个字符。

您也许可以从TextBox继承并添加一个名为TimedPasswordChar的属性。然后订阅ValueChanged事件。在此处理程序中,如果TimedPasswordChar不为null或为空,则以1000ms间隔启动Timer对象。在Tick事件处理程序中,在第一行停止计时器将最后一个字符转换为TimedPasswordChar。请记住,您需要将切换到TimedPasswordChar的每个字符添加到保存实际密码的私有成员变量。我建议使用System.Security.SecureString,因为它是密码。

在将最后一个char转换为TimedPasswordChar之前,然后使用.AppendChar(...)添加输入的值。

但是,如果用户编辑字符串,则会使其复杂化。您需要监视已编辑的字符串,然后在安全字符串上使用.RemoveAt(...)以使其保持同步。