C# 按键事件工作不正常

C# 按键事件工作不正常,c#,C#,我对按键事件有问题 当我在textbox1中输入10位数字时,它会根据我的需要使用10位数字。但现在,如果我按backspace,它会显示一条消息“您不能输入超过十位数字”。这是我的第一个问题 第二个问题是,当我按backspace清除textbox1并再次输入数字时,只需要9位数字 请告诉我我的代码出了什么问题: private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (textBox1.Text.Tr

我对按键事件有问题

当我在textbox1中输入10位数字时,它会根据我的需要使用10位数字。但现在,如果我按backspace,它会显示一条消息“您不能输入超过十位数字”。这是我的第一个问题

第二个问题是,当我按backspace清除textbox1并再次输入数字时,只需要9位数字

请告诉我我的代码出了什么问题:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
  if (textBox1.Text.Trim().Length > 9)
  {
      MessageBox.Show("You can't enter more than ten digits...");
      textBox1.MaxLength = 9;

  }
}

您可以检查KeyChar是否为backspace:

if (e.KeyChar != '\b' && textBox1.Text.Trim().Length > 9)
{
    e.Handled = true;
    MessageBox.Show("You can't enter more than ten digits...");
}

为什么要更改输入框的最大长度?在第6行textBox1.MaxLength=9;您应该在keypress和keydown之后的keyup事件中检查长度。由于设置文本框max length`textBox1.MaxLength=9;`删除此项以避免第二个问题。感谢Jimmy的帮助。我正在更改最大长度,因为在此文本框中,我希望用户只输入10位数字。在这个文本框中,用户将输入他的手机号码,我想输入10位数字,所以我将maxlength改为9。感谢Mirza Danish的帮助。如果我删除文本框maxlength,它将需要超过10位数字,这是我不想要的。谢谢这段代码的帮助。第一个问题已解决,但第二个问题仍然存在。@Mahaveer您是否已删除此问题:textBox1.MaxLength=9;?您还应该在按键事件中调用此代码。这对我有用。谢谢瓦诺·迈苏拉泽。但是你仔细读过我的代码了吗。我打电话给按键事件。如果我删除maxlength,文本框将包含10个以上的数字,我不希望您使用e.Handled=true;?