2012-04-23 30 views
4

我正在創建一個應用程序,我不希望字母或特殊字符被用戶使用,但數字(數字)除外。用戶只能輸入數字......如果用戶輸入字母或特殊字符,然後它會顯示一條錯誤消息......我已經找到了「空部分」,即TextBlock僅接受Windows Phone 7中的數字

if (uservalue == "") 
    textblock.text = "Sorry! enter digit please" 
else 
    textblock.text=y.toString(); 

如果用戶的解決方案只需按下「點擊我」按鈕,而無需在文本框中輸入數字,則此消息會在文本塊中出現「抱歉!請輸入數字」。我想知道如何解決字母和特殊字符的問題?

+2

你應該編輯你的標題。如果你有一個有意義的標題,更多的人會閱讀並回答你的問題。 – Skalli 2012-04-23 14:50:58

回答

2

你可以使用TryParse方法:

int digit; 
if (!int.TryParse(uservalue, out digit)) 
{ 
    textblock.text = "Sorry! enter digit please"; 
} 
else 
{ 
    textblock.text = digit.toString(); 
} 

這假設假設用戶輸入有效的32位整數。如果您需要處理較大的值,其中可以進入了一個非常大的數字,你可以使用下面的正則表達式\d+驗證輸入:

if (!Regex.IsMatch(uservalue, @"\d+")) 
{ 
    textblock.text = "Sorry! enter digit please"; 
} 
else 
{ 
    textblock.text = uservalue; 
} 
11

您可以更改手機的鍵盤,以僅顯示數字,在您的文本框中添加以下內容:

<TextBox .... InputScope="Digits" ....> 

這仍然會添加'。'鍵盤上的鍵。爲了防止用戶鍵入它,你KeyUp事件添加到文本框,並做到以下幾點:

private void KeyUp(object sender, System.Windows.Input.KeyEventArgs e) 
{ 
    TextBox txt = (TextBox)sender; 
    if (txt.Text.Contains('.')) 
    { 
     txt.Text = txt.Text.Replace(".", ""); 
     txt.SelectionStart = txt.Text.Length; 
    } 
} 
+0

可以改進KeyUp事件:只需檢查「e.KeyCode」是否爲「。」。如果是的話,使'e.Handled = true' – 2012-04-23 15:02:21

+0

感謝您的建議佩德羅;) – Dante 2012-04-23 15:04:36

+0

當用戶的地區變化會發生什麼?不會''。成爲一個 ',' ?似乎Char.IsDigit仍然應該使用,無論。 – 2012-04-23 22:34:48

0

您可以使用正則表達式

1

您可以使用一個TextBox和設置您的XAML TextBox.InputScope=NumberInputScope

1

嘗試這肯定會工作申報h和k爲整數variables.textbox只允許數字

private void txt3_KeyPress(object sender, KeyPressEventArgs e) 
    { 

     for (int h = 58; h <= 127; h++) 
     { 
      if (e.KeyChar == h)    //58 to 127 is alphabets tat will be   blocked 
      { 
       e.Handled = true; 
      } 

     } 

     for(int k=32;k<=47;k++) 
     { 
      if (e.KeyChar == k)    //32 to 47 are special characters tat will 
      {         be blocked 
       e.Handled = true; 
      } 

     } 



    }