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
Libérer: 2025-01-16 20:27:10
original
693 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal