【问题标题】:Restrict textbox to accept numbers and letters only in Windows 8 store app限制文本框仅在 Windows 8 商店应用程序中接受数字和字母
【发布时间】:2014-05-20 07:01:33
【问题描述】:

我是编程新手,我正在尝试制作一个只接受字母和数字的文本框。我已经寻找解决方案,但我找不到我想要的。这是我到目前为止所做的:

private void TB1_KeyDown(object sender, KeyRoutedEventArgs e)
    {
        if (e.Key == VirtualKey.Space)
        {
            e.Handled = true;
        }
        var regex = new Regex(@"[^a-zA-Z0-9\s]");
        if (regex.IsMatch(e.Key.ToString()))
        {
            e.Handled = true;
        }
    }

我可以将数字删除到正则表达式中,以防止用户输入特殊字符,但这也会限制他们输入数字。此文本框将成为 Windows 8 商店应用程序的一部分,我正在使用 C#。希望有人可以帮助我。谢谢!

编辑:

我不得不放弃限制用户在文本框中输入特殊字符,因为我离它越来越近了。我所做的是我使用了我的第一个代码,但做了一些更改。

private void TB1_KeyDown(object sender, KeyRoutedEventArgs e)
    {
        if (e.Key == VirtualKey.Enter)
        {
            var regex = new Regex(@"[^a-zA-Z0-9\s]");
            if (regex.IsMatch(TB1.Text))
            {
                t1.Text = "Can't contain special characters.";
            }
        }

    }

我没有在“IsMatch”的测试中使用按键,而是使用了文本框中的文本。此 if 语句将过滤文本框中是否存在除数字和字母之外的其他字符,因此我创建了一个文本块,它将注释文本框中有一个特殊字符。

【问题讨论】:

    标签: c# regex


    【解决方案1】:

    如果你想使用Regex,请使用下面的正则表达式来匹配。

    ^[a-zA-Z0-9]*$
    

    使用示例:

    Regex r = new Regex("^[a-zA-Z0-9]*$");
    if (r.IsMatch(SomeString))
    {
          ...
    }
    

    【讨论】:

    • 我在我的问题中使用了相同的代码,只是用您提供的正则表达式替换了正则表达式。但我仍然可以输入特殊字符。还是我做错了什么?感谢您的回答
    【解决方案2】:

    我之前的回答不正确,因为我在 VirtualKey 的工作方式上犯了一个错误(它不是 char 值)。

    虚拟键对 0 -9 和小写字母 A (a) 和大写字母 A (A) 具有相同的数字,因此如果我一开始误导您,我很抱歉。

    if(e.Key >= VirtualKey.Number0 && e.Key <= VirtualKey.Z) e.Handled = false;
    

    此代码应检查您的键值是否高于或等于 Number0 (48) 的值并低于或等于 Z | z (90)。

    你可以阅读更多关于 VirtualKey here

    【讨论】:

      【解决方案3】:

      在文本框的 KayPress 事件中输入以下行。它不允许用户输入任何字母或任何数字。只允许输入符号:

       e.Handled = char.IsLetter(e.KeyChar) || char.IsDigit(e.KeyChar) ? false:true;
      

      示例代码:

              private void yourTextBoxName_KeyPress(object sender, KeyPressEventArgs e)
              {
                  e.Handled = char.IsLetter(e.KeyChar) || char.IsDigit(e.KeyChar) ?false:true;
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-28
        • 1970-01-01
        • 1970-01-01
        • 2015-06-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多