如果文本框值等于预先确定的长度

时间:2015-06-03 19:14:07

标签: c# winforms

我有一个表格,用户输入一个4位数的密码。输入引脚编号后,我想在按下最后一个引脚编号后自动调用我的方法。我假设这需要在文本框上的keydown事件中完成。

这是我到目前为止所尝试的内容。

  private void txtPinNumber_KeyDown(object sender, KeyEventArgs e)
    {
        if (txtPinNumber.Text.Trim().Length == 4)
        {
            SendKeys.Send("{ENTER}");
            if (e.KeyCode == Keys.Enter)
                Verify_Pin();
        }
    } 

它似乎工作但用户必须按一个附加键才能执行该方法。我错过了什么?

2 个答案:

答案 0 :(得分:2)

没有理由以编程方式按 Enter 然后检查它。只需调用另一种方法。

此外,KeyDown事件在 Text属性更改之前触发以反映最近输入的字符,因此您必须将该代码放入不同的事件。

使用TextChangedKeyUp

private void txtPinNumber_TextChanged(object sender, KeyEventArgs e)
{
    if (txtPinNumber.Text.Trim().Length == 4)
        Verify_Pin();
} 

答案 1 :(得分:1)

你说

When the pin number is entered, I would like to call my method automatically once the last number of the pin number is pressed.

因此,您可以在文本框的KeyUp事件中执行此操作

private void txtPinNumber_KeyUp(object sender, KeyEventArgs e)
{
    if (txtPinNumber.Text.Trim().Length == 4)
        Verify_Pin();
}
顺便说一句,建议让用户按回车然后再运行代码。因为它可能是用户意外按下最后一个数字错误。