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

我试着验证c#中的电话号码的文本框中的代码。我假设用户必须输入10个数字。但这种方式无法正常工作。此代码允许数字和字符。我如何验证仅允许10位数&的数字的文本框。如何验证Windows窗体中电话号码的文本框?

+2

那么这有什么问题呢?你只想检查一下长度吗? – Sajeetharan

+1

您应该使用以下模式的正则表达式:'“^ \ d {10} $”'或使用蒙版文本框而不是常规文本框。 –

+1

Define无法正常工作 –

回答

0

使用正则表达式

MatchCollection mc = Regex.Matches(TextBox.Text,@"\(?\d{3}\)?-? *\d{3}-? *-?\d{4}"); 

int noOfMatches = mc.Count; 

if(mc>0) 
{ 
valid condtion logic 
} 
else 
{not valid logic 
} 
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; 
     } 
    } 
    } 
} 

唯一其他可能的问题,当用户输入1位数以上,但小于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(); 
    } 
} 
+0

我可以使用这两个事件来验证一个文本框吗? –

+0

是的。发布的代码使用名为'txtPhoneNumber'的ONE'TextBox'。事实上,如果没有这两个事件......它不会像描述的那样工作。 – JohnG