Maison >développement back-end >C++ >Comment puis-je générer par programme des événements Keypress et TextInput en C# WPF ?

Comment puis-je générer par programme des événements Keypress et TextInput en C# WPF ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-16 20:27:10695parcourir

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

Générer par programmation des événements clés en C#

La simulation d'événements clés en C# peut être réalisée grâce à diverses techniques. Voici une manière détaillée d'utiliser le framework WPF :

Solution WPF

Pour simuler une pression sur une touche sur un élément WPF spécifique, par exemple en appuyant sur la touche Inser sur l'élément actuellement ciblé :

<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>

Cette solution déclenche l'événement KeyDown directement vers la cible, en contournant le méta-traitement.

Simulation de saisie de texte

Pour simuler un événement TextInput, utilisez le code suivant :

<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>

Remarques

  • Les événements d'aperçu (par exemple, PreviewKeyDown) doivent précéder les événements standard (par exemple, KeyDown).
  • Le déclenchement d'événements directement sur la cible contourne le méta-traitement à moins que InputManager.ProcessInput() ne soit utilisé.
  • Les événements de touches simulés ne se comporteront comme de véritables touches du clavier que lorsqu'ils sont gérés via InputManager.ProcessInput().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn