TextBlock仅接受Windows Phone 7中的数字

时间:2012-04-23 14:45:51

标签: c# windows-phone-7

我正在创建一个应用程序,其中我不希望用户使用字母或特殊字符,但数字(数字)除外。用户只能输入数字......如果用户输入字母或特殊字符,则会显示错误信息......我找到了“空白部分”的解决方案,即

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

如果用户只需按“单击我”按钮而不输入文本框中的数字,则会在文本块中显示此消息“抱歉!请输入数字”。我想知道如何解决字母和特殊字符的问题?

6 个答案:

答案 0 :(得分:11)

您可以通过在TextBox中添加以下内容来更改手机的键盘,仅显示数字:

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

这仍然会添加'。'键盘上的键。要阻止用户键入它,请将KeyUp事件添加到TextBox并执行以下操作:

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;
    }
}

答案 1 :(得分: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;
}

答案 2 :(得分:1)

您可以使用TextBox并在xaml中设置TextBox.InputScope=NumberInputScope

答案 3 :(得分:1)

尝试这肯定它会工作声明h和k作为整数变量.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;
            }

        }



    }

答案 4 :(得分:0)

您可以使用正则表达式

答案 5 :(得分:0)

以Rithc Melton所说的为基础,这里列出了所有输入镜选项

Input scope list and tutorial