2

私のWindowsphone7(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

正規表現チェックを実行して、それを検証できます(現在のアプローチよりも少しクリーンです)。最後の文字を無視する必要があります。つまり、テキストボックスのテキストから削除します。

于 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 に答える