首頁 >後端開發 >C++ >如何在 C# WPF 中以程式設計方式產生按鍵和文字輸入事件?

如何在 C# WPF 中以程式設計方式產生按鍵和文字輸入事件?

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 解

要模擬特定 WPF 元素上的按鍵,例如在目前獲得焦點的元素上按下 Insert 鍵:

<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 中以程式設計方式產生按鍵和文字輸入事件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn