4

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

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

如果用户只是按下“点击我”按钮而不在文本框中输入数字,则此消息“对不起!请输入数字”出现在文本块中。我想知道如何解决字母和特殊字符的问题?

4

6 回答 6

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;
    }
}
于 2012-04-23T14:51:37.187 回答
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;
}
于 2012-04-23T14:49:12.273 回答
1

试试这个肯定会起作用,将 h 和 k 声明为整数变量。文本框只允许数字

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

        }



    }
于 2013-10-15T07:05:01.733 回答
1

您可以在 xaml 中使用TextBox和设置TextBox.InputScope=Number输入范围

于 2012-04-23T14:55:22.977 回答
0

基于 Rithc Melton 所说,这里是所有输入范围选项的列表

输入范围列表和教程

于 2012-04-25T10:35:37.323 回答
0

您可以使用正则表达式

于 2012-04-23T14:52:18.260 回答