C# Windows phone7:限制为textbox插入某些键

C# Windows phone7:限制为textbox插入某些键,c#,windows-phone-7,windows-phone-7.1,C#,Windows Phone 7,Windows Phone 7.1,在我的WindowsPhone7(silverlight)应用程序中,我必须限制为文本框插入符号。基本上,我只需要来允许插入字母数字字符 因此,作为第一步,我补充说 InputScope=“alphanumericalfwidth”然后InputScope=“alphanumericalfwidth” 但在这两种情况下,键盘都会显示并允许输入以下字符和更多字符@$%&%() 因此,我在文本框KeyDown事件中实现了以下逻辑 if (!( (e.PlatformKeyCode >=

在我的WindowsPhone7(silverlight)应用程序中,我必须限制为文本框插入符号。基本上,我只需要来允许插入字母数字字符

因此,作为第一步,我补充说

InputScope=“alphanumericalfwidth”
然后
InputScope=“alphanumericalfwidth”

但在这两种情况下,键盘都会显示并允许输入以下字符和更多字符<代码>@$%&%()

因此,我在文本框
KeyDown
事件中实现了以下逻辑

    if (!( (e.PlatformKeyCode >= 48 && e.PlatformKeyCode <= 57) || (e.PlatformKeyCode >= 65 && e.PlatformKeyCode <= 90) || (e.PlatformKeyCode >= 97 && e.PlatformKeyCode <= 122)))
    {
         e.Handled = true;
    }

如果(!((e.PlatformKeyCode>=48&&e.PlatformKeyCode=65&&e.PlatformKeyCode=97&&e.PlatformKeyCode您可以执行正则表达式检查来验证(比当前方法更简洁)您必须忽略最后一个字符,即从文本框中的文本中删除它,这是因为PlatformKeyCode不是您试图处理的ASCII值

使用TextChanged事件处理程序:

private void bla_TextChanged(object sender, TextChangedEventArgs e)
{
    bla.Text = Regex.Replace(bla.Text, @"[^\w\s]", string.Empty);
}

其中bla是文本框名称。

Hi AD.Net。我也用RegEx进行了测试。问题是“e.PlatformKeyCode”“2”和“@”都返回50。就像“3”和“#”等返回51。因此无法确定它是3还是用户输入的…这就是问题。非常感谢igrali。是的,这对我很有效……但有一件事我不清楚。你知道它在“按键”中通过“e.PlatformKeyCode”到底是什么吗事件。正如您所说,它不完全返回相应的ASCII值。我不完全确定,但您可以在此处找到更多详细信息: