2011-08-11 17 views
4

私はTextBoxです。これは、挿入のみの数値(フィルタリング)を許可していますが、コピーしたテキストを貼り付けると、あらゆる種類のシンボルを許可します。ペーストする前にテキストを防止またはフィルタリングするにはどうすればよいですか?Silverlightでのペーストのフィルタリング4

答えて

1

あなたは可能性があり、バックアップ、あなたのテキストを任意の手動入力の前にして、提供された入力がそうのような以前のテキストを復元し、有効ではありません。

 _backupText = string.Empty; 
     doNotPasteTextBox.TextInputStart += (sender, e) => 
               { 
                int textParsed; 
                if(int.TryParse(e.Text,out textParsed)) 
                { 
                 _backupText = doNotPasteTextBox.Text.Insert(doNotPasteTextBox.SelectionStart, e.Text); 
                }else 
                { 
                 e.Handled = true; 
                } 
               }; 

     doNotPasteTextBox.TextChanged += (sender, e) => 
              { 
               int textParsed; 
               int selectionStart = doNotPasteTextBox.SelectionStart; 
               if(!int.TryParse(doNotPasteTextBox.Text, out textParsed)) 
               { 
                doNotPasteTextBox.Text = _backupText; 
               } 
               doNotPasteTextBox.SelectionStart = selectionStart; 
              }; 

あなたがいるときので、私はtrying to capture the control keysか何かをお勧めしませんがMacまたはLinuxの場合は、あなたはうんざりしています。

サンプルを調整して、新しいテキストボックスコントロール内に注ぎ込んで、クリーナーにしても構いませんが、そのアイデアが得られます。

1

Clipboard.GetText()を使用してテキストボックスに挿入されたテキストを取得できますが、これによりメッセージがポップアップ表示され、ユーザーはアプリケーションにクリップボードへのアクセス権を与える必要があります。

あなたの問題がなければ、私はこれを使用します。