ホームページ >バックエンド開発 >C++ >C# WPF で Keypress イベントと TextInput イベントをプログラムで生成するにはどうすればよいですか?

C# WPF で Keypress イベントと TextInput イベントをプログラムで生成するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-16 20:27:10698ブラウズ

How Can I Programmatically Generate Keypress and TextInput Events in C# WPF?

C# でキー イベントをプログラム的に生成する

C# での主要なイベントのシミュレーションは、さまざまな手法を通じて実現できます。 WPF フレームワークの詳しい使用方法は次のとおりです:

WPF ソリューション

現在フォーカスされている要素で Insert キーを押すなど、特定の WPF 要素でのキー押下をシミュレートするには:

<code class="language-csharp">var key = Key.Insert;                    // 要发送的键
var target = Keyboard.FocusedElement;    // 目标元素
var routedEvent = Keyboard.KeyDownEvent; // 要发送的事件
target.RaiseEvent(
  new KeyEventArgs(
    Keyboard.PrimaryDevice,
    PresentationSource.FromVisual(target),
    0,
    key)
  { RoutedEvent = routedEvent }
);</code>

このソリューションは、メタ処理をバイパスして、KeyDown イベントをターゲットに直接発生させます。

文字入力シミュレーション

TextInput イベントをシミュレートするには、次のコードを使用します:

<code class="language-csharp">var text = "Hello";
var target = Keyboard.FocusedElement;
var routedEvent = TextCompositionManager.TextInputEvent;

target.RaiseEvent(
  new TextCompositionEventArgs(
    InputManager.Current.PrimaryKeyboardDevice,
    new TextComposition(InputManager.Current, target, text))
  { RoutedEvent = routedEvent }
);</code>

メモ

  • プレビュー イベント (PreviewKeyDown など) は標準イベント (KeyDown など) よりも前に置く必要があります。
  • InputManager.ProcessInput() が使用されない限り、イベントをターゲットに直接発生させるとメタ処理がバイパスされます。
  • シミュレートされたキー イベントは、InputManager.ProcessInput() を介して処理される場合にのみ、実際のキーボード キーのように動作します。

以上がC# WPF で Keypress イベントと TextInput イベントをプログラムで生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。