如何在Windows窗体中验证电话号码的文本框?

时间:2017-04-15 09:13:04

标签: c# winforms

if(textBox1.TextLength !=10)
{
    MessageBox.Show("Wrong Telephone No Please check it again",
                    "ERROR",MessageBoxButtons.OK,MessageBoxIcon.Information);
}   

我尝试使用此代码验证c#中电话号码的文本框。我假设用户必须输入10个数字。但这不能正常工作。此代码允许数字和字符。如何验证只允许10位数字的文本框?只有数字。

2 个答案:

答案 0 :(得分:1)

使用简单的方法...确保文本框包含正好10位数字且仅包含数字...然后一种可能的解决方案是捕获用户在文本框中输入的每个键。如果按下的键不是数字或退格键,则只需忽略此键。只能使用下面的文本框KeyPressed事件来捕获数字键。下面的代码也只允许10位数。如果输入的数字超过10位,则会忽略它们。

private void txtPhoneNumber_KeyPress(object sender, KeyPressEventArgs e) {
  if (!Char.IsDigit(e.KeyChar) && (e.KeyChar != (char)(Keys.Back))) { 
    e.Handled = true;
  }
  else {
    // is a digit or backspace - ignore digits if length is alreay 10 - allow backspace
    if (Char.IsDigit(e.KeyChar)) {
      if (txtPhoneNumber.Text.Length > 9) {
        e.Handled = true;
      }
    }
  }
}

当用户输入一个或多个数字但不到10位数时,可能会出现唯一的其他可能问题,并尝试通过单击另一个控件来保留文本框。在这里,我们需要连接文本框Leave事件。如果用户在输入正好十位数字之前尝试离开文本框,则下面的代码将提示用户电话号码不是十位数,然后将焦点BACK设置为电话号码文本框。用户可以清除文本并在必要时继续,但用户将无法输入九位或更少的数字并保留电话号码文本框。希望这会有所帮助。

private void txtPhoneNumber_Leave(object sender, EventArgs e) {
  if ((txtPhoneNumber.Text.Length < 10) && (txtPhoneNumber.Text.Length > 0)) {
    MessageBox.Show("Phone number must be 10 digits!");
    txtPhoneNumber.Focus();
  }
}

答案 1 :(得分:0)

使用正则表达式

log.segment.bytes