2011-09-07 55 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; 
     } 

希望它會幫助你

謝謝