如何在c# WinForms中执行一个方法,如果文本框的值等于预先确定的长度

本文关键字:文本 如果 于预先 方法 WinForms 执行 一个 | 更新日期: 2023-09-27 17:53:14

我有一个用户输入4位pin码的表单。当输入pin号时,我想在按下pin号的最后一个数字时自动调用我的方法。我假设这需要在文本框上的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();
        }
    } 

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

如何在c# WinForms中执行一个方法,如果文本框的值等于预先确定的长度

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

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

使用TextChangedKeyUp

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

你说

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();
}

顺便说一句,建议让用户按回车键,然后运行代码。因为它可能是用户不小心按错了最后一个数字。

相关文章: