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

因此,作为第一步,我添加了

InputScope="AlphanumericHalfWidth",然后InputScope="AlphanumericFullWidth"

但是在两种情况下,键盘都会显示并允许输入以下字符以及更多其他字符。 @ # $ % & % ( ) !

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

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


但是事情是,它仍然允许在文本框中输入以下字符。 @ # $ % & % ( ) !

无法弄清楚我到底要实现这个目标。如果有人可以指导我限制文本框中插入除字母数字之外的所有其他字符,我将不胜感激。谢谢....

最佳答案

这是因为PlatformKeyCode不是您要处理的ASCII值。

使用TextChanged事件处理程序:

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


其中bla是文本框名称。

10-07 23:10