C# 限制textbox仅在Windows 8应用商店应用程序中接受数字和字母

C# 限制textbox仅在Windows 8应用商店应用程序中接受数字和字母,c#,regex,C#,Regex,我是编程新手,我正在尝试制作一个只接受字母和数字的文本框。我一直在寻找解决办法,但我找不到确切的答案。这就是我到目前为止所做的: private void TB1_KeyDown(object sender, KeyRoutedEventArgs e) { if (e.Key == VirtualKey.Space) { e.Handled = true; } var regex = new Rege

我是编程新手,我正在尝试制作一个只接受字母和数字的文本框。我一直在寻找解决办法,但我找不到确切的答案。这就是我到目前为止所做的:

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;
        }
    }
我可以删除regex中的数字,以防止用户键入特殊字符,但这也会限制用户键入数字。此文本框将是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语句将进行过滤,因此我创建了一个文本块,该文本块将注释文本框中有一个特殊字符。

如果要使用正则表达式,请使用下面的正则表达式进行匹配

^[a-zA-Z0-9]*$
示例用法:

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

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

虚拟键对任何数字都有一个定义值,该值为0-9,小写字母a(a)和大写字母a(a)具有相同的数字,因此如果我一开始给您指明了错误的方向,我很抱歉

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

如果(e.Key>=VirtualKey.Number0&&e.Key在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;
        }

我在问题中使用了相同的代码,只是用您提供的正则表达式替换了正则表达式。但是我仍然能够输入特殊字符。或者我所做的是错误的?谢谢您的回答