8
votes

Équivalent à une propriété KeyPreview dans WPF

Je pense que je pense que vous prenez la plongée à WPF de Winforms pour certaines de mes applications, je travaille actuellement sur le programme combiné du lecteur de code à barres / d'entrée de texte (formulaires de patient soins de santé).

Pour pouvoir traiter les caractères de code à barres, je compte sur la propriété KeyPreview de Winforms (car les codes à barres peuvent être numérisés quels que soient le contrôle de la mise au point).

Mais je ne peux pas sembler trouver une propriété KeyPreview dans Ni VS2008 ou VS2010, pour une application WPF.

Y a-t-il une approche / solution alternative pour gérer mes caractères de code à barres dans WPF?

rgrs henry


0 commentaires

3 Réponses :


3
votes

WPF utilise des bouillons d'événement et un tunneling. En d'autres termes, les événements se déplacent vers le bas et dans l'arbre d'élément visuel. Certains événements auront un événement de prévisualisation correspondant. Donc, MOUSEDOWN aura un PreviewMousedown que vous pouvez répondre à. Consultez Ce lien et faites défiler jusqu'à la section Evénements d'entrée WPF.


1 commentaires

Merci pour le lien, devrait être possible pour moi d'attraper l'événement de la prévisualisation en quelque sorte, y examinera-t-il ...



6
votes

Utilisez le remplacement dans vos propres commandes ou commandes (ceci est une substitution de uielement ) xxx

si vous souhaitez prévisualiser la clé sur n'importe quel élément sur lequel vous ne vous créez pas, vous pouvez faire ceci: xxx

puis avez un gestionnaire comme suit: - xxx

si vous marquez L'événement comme manipulé ( E.Hendled = true; ) Cela arrêtera l'événement de clé publié.


0 commentaires

3
votes

merci de travailler! Seul problème était que je codir dans VB non c #, mais l'idée de base est titulaire. Soigné de créer une étiquette de l'air mince et utilisez-le pour vous insérer dans le flux d'événements.

Si quelqu'un d'autre est intéressé par la même solution, mais dans VB pour WPF, voici mon programme de test, il parvient à jetter tous les caractères "A" dactylés, quel que soit le contrôle de la mise au point: P>

Class MainWindow

    Dim WithEvents labelFromThinAir As Label

    Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
        AddHandler MainWindow.PreviewKeyDown, AddressOf labelFromThinAir_PreviewKeyDown
    End Sub

    Private Sub labelFromThinAir_PreviewKeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
        TextBox1.Text = e.Key    ' watch 'em coming
        If (44 = e.Key) Then e.Handled = True
    End Sub

End Class


0 commentaires