2011-09-07 62 views

回答

0

生病请您看看下面link,这个问题对于如何使用正则表达式来验证电话号码,你的情况一个方法是使用属性的你的电话绑定的setter内的正则表达式数量和抛出一个ValidationException如果失败的话,绑定时包括ValidatesOnException选项

public string PhoneNumber 
{ 
    get { return _phoneNumber; } 
    set { 
     if (!IsValidPhoneNumber(value)) 
      throw new ValidationException("Invalid Phone Number"); 
     _phoneNumber = value; 
    } 
} 

与绑定表达式像

{Binding PhoneNumber, ValidatesOnException=True} 
+0

例如,如果文本框的绑定引发此异常,它如何反应。它会变成红色还是什么? –

+0

验证用户输入异常的电话号码是一种不好的做法。这是一种令人烦恼的例外 - 没有特别的情况。我知道这是XAML的一部分,但我不喜欢它。我宁愿使用布尔变种。 –

+0

@rico是控制模板内置了样式,它将显示红色边框和工具提示,其中包含msg例外。 –

0

您可以设置Textbox.Maxlength属性 并将输入范围设置为Numbers。

谢谢。

0
using System.Text.RegularExpressions;public static bool IsItNumber(string inputvalue){Regex isnumber = new Regex("[^0-9]");return !isnumber.IsMatch(inputvalue);} 

public bool Main(string text) 

{

if (!Regex.Match(text,@"^[1-9]\d{2}-[1-9]\d{2}-\d{4}$").Success) 
    { 
    return false 
    } else { 
return true 
} 
    } 
-1

这会是很简单。简单的方法是,在文本框中添加一个名为“PreviewTextInput”的事件处理程序。

<TextBox x:Name="txtbox_PhoneNum" PreviewTextInput="txtbox_PhoneNum_PreviewTextInput"/> 

在cs文件,

private void txtbox_PhoneNum_PreviewTextInput(object sender, TextCompositionEventArgs e) 
    { 
     Regex reg = new Regex("[^0-9]+"); 
     e.Handled = reg.IsMatch(e.Text); 
    } 

如果e.Handled是真的,您输入字母字符,最后你可以通过这个做过滤。

+0

隧道事件不适用于Windows Phone。 –

3

如果你想使用10号手机验证比你的MaxLength = “10”和电话号码仅InputScope = “TelephoneNumber” 设置这一切都在XAML侧像

<TextBox Name="txtPhoneNo" Width="310" Text="" InputScope="TelephoneNumber" MaxLength="10" KeyDown="txtContactUsPhone_KeyDown" /> 

现在genrate你的文本框和病虫害娄代码的keydown事件..

private void txtContactUsPhone_KeyDown(object sender, KeyEventArgs e) 
     { 
      if (System.Text.RegularExpressions.Regex.IsMatch(e.Key.ToString(), "[0-9]")) 
       e.Handled = false; 
      else e.Handled = true; 
     } 

希望它会帮助你

谢谢