2012-04-23 85 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; 
      } 

     } 



    }