2

在我的 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;
    }

但问题是它仍然允许为文本框输入以下字符。@ # $ % & % ( ) !

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

4

2 回答 2

1

You can do a regex check to validate that (a bit cleaner than your current approach) and you'll have to disregard the last char, i.e. remove it from the text in your textbox

于 2012-08-07T16:02:11.683 回答
1

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

使用 TextChanged 事件处理程序:

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

其中 bla 是文本框名称。

于 2012-08-07T16:05:34.727 回答