keydown事件无法获得确切的长度

cho*_*eld 2 c# winforms

我想问一下,当我使用事件keydown计算文本的长度时,它不匹配.但当我按下回车键或退回键时,它就变成了9.有没有办法让它从而开始计数1而不是0.

我使用的代码

private void textEdit1_KeyDown(object sender, KeyEventArgs e)
    {
        if (this.textEdit1.Text.Length == 10)
        {
            textEdit2.Text = textEdit1.Text;                
            this.textEdit1.Text = "";

        }
        label2.Text = textEdit1.Text.Length.ToString();
        label1.Text = textEdit2.Text.Length.ToString();
    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Vis*_*har 5

您必须在Key_Up事件中尝试相同的操作.

private void textEdit1_KeyUp(object sender, KeyEventArgs e)
{
    if (this.textEdit1.Text.Length == 10)
    {
        textEdit2.Text = textEdit1.Text;                
        this.textEdit1.Text = "";

    }
    label2.Text = textEdit1.Text.Length.ToString();
    label1.Text = textEdit2.Text.Length.ToString();
}
Run Code Online (Sandbox Code Playgroud)

因为Key_Down将在按下键时以及在释放键之前执行.

另一方面,Key_Up将在您在键盘上释放键后执行,因此键入的字符将出现在文本框中,您将获得所需的结果.