0

テキストボックスでマスキングと PreviewTextInput および PreviewKeyDown イベントを使用する検証コードがいくつかあります。テキストボックスの値を手動で変更すると、検証は完全に機能します。プログラムで値を設定すると、ボックスをクリックして文字を削除して再度追加し、上記のイベントのいずれかまたは両方を手動で起動するまで、検証は開始されません。

検証が機能するように、これらのイベントのいずれかを手動で発生させる方法はありますか?

私は次のようなものを試しました:

this.TextBox.RaiseEvent(this.TextBox.PreviewTextInput);

しかし、何も機能していないようです。タイプを一致させることもできません。どんなアイデアでも大歓迎です。

私が使用しているマスキング ベースの検証コードは、ここで見ることができます: TextBox の入力制限を定義する方法は?

4

3 に答える 3

0

次のコードを使用して、TextBox へのテキスト入力を偽装できます。

TextCompositionEventArgs args = new TextCompositionEventArgs(
    InputManager.Current.PrimaryKeyboardDevice,
    new TextComposition(InputManager.Current, txtBox, "Test text")
);
args.RoutedEvent = TextCompositionManager.PreviewTextInputEvent;

txtBox.RaiseEvent(args);

args = new TextCompositionEventArgs(
    InputManager.Current.PrimaryKeyboardDevice,
    new TextComposition(InputManager.Current, txtBox, "Test text")
);
args.RoutedEvent = TextCompositionManager.TextInputEvent;

txtBox.RaiseEvent(args);
于 2012-05-31T15:18:20.820 に答える
0

または、t.Select() などのコードを介してテキストを入力した後、テキストボックス内のテキストを選択することもできます。

このように、ユーザーがテキスト ボックスからフォーカスを移動すると、検証が開始されます。

于 2013-01-14T06:02:46.377 に答える