文本框:密码字符(将单词的字母逐个更改为星号)

时间:2014-10-15 23:08:27

标签: c# winforms textbox

我的登录表单中的密码文本框有问题。我希望它比其他人更精确,这就是我想知道的:

我会在文本框中写下“密码”这个词,如果我输入第一个字母“p”我看到它是字母p,那么如果我输入第二个字母是“a”,那么字母“p” “现在将成为”*“,而第二个字母也可以被视为”a“,然后直到”密码“一词变为”******* d“。然后如果我离开那个文本框,剩下的字母也会变成“*”。 我试图去属性并寻找密码字符,但它不符合我的需要。 我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

在这里,我根据Textbox控件的 KEY_UP LEAVE 事件为您创建一个简单示例。

使用此代码,您需要一些额外的工作来完善它,如:

忽略不是字母数字和特殊字符的键(如Backspace,Enter,Shift,Enter和...)在KEY_UP上

测试并享受.... ;)

    private void txtxPassword_KeyUp(object sender, KeyEventArgs e)
    {
        var pass = txtxPassword.Text;
        if (pass.Length < 1)
            realPass = string.Empty;
        else
            realPass += pass[pass.Length - 1];


        if (e.KeyCode == Keys.Back)
        {
            if (realPass.Length <= 1)
                realPass = "";
            else
            {
                realPass = realPass.Substring(0, realPass.Length - 2);
            }
        }
        string result = "";
        if (realPass != string.Empty)
        {

            for (var i = 0; i < realPass.Length - 1; i++)
            {
                result += "X";
            }
            result += realPass[realPass.Length - 1];
        }

            txtxPassword.Text = result;
            txtxPassword.SelectionStart = result.Length;
            lblpass.Text = realPass;
        }

    private void txtxPassword_Leave(object sender, EventArgs e)
    {
        string result="";
        for (var i = 0; i < realPass.Length ; i++)
            {
                result += "X";
            }
        txtxPassword.Text = result;
        lblpass.Text = realPass;
    }

结果:

............................................. {{ 0}} .............................................


修改

您必须将RealPassword保留在变量中。当您更改textbox.text时,您的RealPassword将被新字符丢失。所以我删除一个名为 realPass 的变量来保留实际插入的密码。它必须是你班上的一般变量:

   private string realPass="";