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

如何在 C# WPF 應用程式中以程式設計方式產生按鍵事件?

DDD
發布: 2025-01-16 20:37:11
原創
869 人瀏覽過

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

在C# 中以程式產生按鍵事件

以程式產生模擬鍵盤按下的事件是各種場景(例如自動化測試)中的一項關鍵任務和使用者介面模擬。本文探討如何在 C# 中實現此功能,特別是在 WPF 框架中。

WPF 應用程式的解決方案

WPF 應用程式的一個簡單方法是利用 KeyEventArgs類別和目標元素上的 RaiseEvent 方法。以下是向當前焦點元素發送 Insert 鍵 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板