ホームページ >バックエンド開発 >C++ >C# WPF アプリケーションでキープレス イベントをプログラムで生成するにはどうすればよいですか?

C# WPF アプリケーションでキープレス イベントをプログラムで生成するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-16 20:37:11874ブラウズ

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

C# でのキー押下イベントのプログラムによる生成

キーボードの押下をシミュレートするイベントのプログラムによる生成は、自動化テストなどのさまざまなシナリオで重要なタスクです。ユーザーインターフェイスのシミュレーションも可能です。この記事では、C# で、特に WPF フレームワーク内でこの機能を実現する方法について説明します。

WPF アプリケーションのソリューション

WPF アプリケーションの簡単なアプローチは、KeyEventArgs を利用することです。クラスとターゲット要素の RaiseEvent メソッド。現在フォーカスされている要素に挿入キー KeyDown イベントを送信する例を次に示します。

var key = Key.Insert;                    // Key to send
var target = Keyboard.FocusedElement;    // Target element
var routedEvent = Keyboard.KeyDownEvent; // Event to send
     target.RaiseEvent(
  new KeyEventArgs(
    Keyboard.PrimaryDevice,
    PresentationSource.FromVisual(target),
    0,
    key)
  { RoutedEvent=routedEvent }
);

このソリューションにより、ネイティブ呼び出しや Windows 内部の操作が不要になり、信頼性が確保されます。さらに、特定の要素でキー押下を正確にシミュレートできます。

TextInput イベント

TextInput イベントの送信については、コードが異なります。わずかに:

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 }
);

考慮事項:

  • コントロールは通常、対応するイベントの前にプレビュー イベントを受信することを想定しています。
  • 経由でイベントを直接発生させます。 RaiseEvent はメタ処理をバイパスし、ほとんどのシナリオで望ましい動作を実現します。ただし、実際のキーボード キーをシミュレートするには、InputManager.ProcessInput() を使用する必要があります。

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

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