Maison > développement back-end > C++ > Comment puis-je générer par programme des événements de pression de touche dans les applications C# WPF ?

Comment puis-je générer par programme des événements de pression de touche dans les applications C# WPF ?

DDD
Libérer: 2025-01-16 20:37:11
original
926 Les gens l'ont consulté

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

Génération programmatique d'événements de pression de touche en C#

La génération programmatique d'événements qui simulent les pressions sur le clavier est une tâche cruciale dans divers scénarios, tels que les tests d'automatisation et simulation d'interface utilisateur. Cet article explique comment obtenir cette fonctionnalité en C#, en particulier dans le framework WPF.

Solution pour les applications WPF

Une approche simple pour les applications WPF consiste à utiliser KeyEventArgs. classe et la méthode RaiseEvent sur l'élément cible. Voici un exemple pour envoyer un événement Insert key KeyDown à l'élément actuellement ciblé :

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

Cette solution élimine le besoin d'appels natifs ou de manipulation des composants internes de Windows, garantissant ainsi la fiabilité. De plus, il permet de simuler des frappes précises sur des éléments spécifiques.

Événements TextInput

Pour l'envoi d'événements TextInput, le code diffère légèrement :

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

Considérations :

  • Contrôles généralement attendez-vous à recevoir les événements Preview avant leurs événements correspondants.
  • Le déclenchement d'événements directement via RaiseEvent contourne le méta-traitement, obtenant ainsi le comportement souhaité dans la plupart des scénarios. Cependant, InputManager.ProcessInput() doit être utilisé pour simuler les touches réelles du clavier.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal