2010-02-16 5 views
1

Comment déterminer si la sélection est effectuée par programmation ou par l'utilisateur.Déterminer si la sélection a été physiquement validée par l'entrée utilisateur (souris ou kb)

J'ai commencé à écrire quelque chose, mais comme il y a plus de travail, j'ai décidé de chercher une procédure prête à l'emploi ou de me fier à l'expérience communautaire.

Voici donc ce que je l'ai écrit (note qui répond en C# sont welcommed aussi):

Private Shared Function IsUserSelect() As Boolean 
    If Mouse.LeftButton = MouseButtonState.Pressed Then Return True 

    Dim shift As Boolean 
    shift = Keyboard.IsKeyDown(Key.LeftShift) 
    If Not shift Then shift = Keyboard.IsKeyDown(Key.RightShift) 

    If shift Then 
     Dim arrow As Boolean 
     arrow = Keyboard.IsKeyDown(Key.Right) 
     If Not arrow Then arrow = Keyboard.IsKeyDown(Key.Left) 
     If arrow Then Return True 
    End If 

    Return False 
End Function 

à appeler au OnSelectionChanged d'une zone de texte et de déterminer si la sélection est faite par l'utilisateur ou presque . Mais ensuite je me rends compte qu'il y a beaucoup plus d'options: Shift + Home, Shift + PageDown et plus encore.
Je préférerais faire confiance à une fonction testée puis réinventer la roue de ponction.
Merci d'avoir lu.

+0

Je ne pense vraiment pas que vous pouvez distiguish sauf si vous avez accès à l'interface physique du matériel directement. Tout est juste des événements et des objets après cela, tous remplaçables. – Lazarus

+0

Ma question est fondamentalement si quelqu'un a déjà expérimenté cela et testé, je ne veux pas compter sur moi-même s'il y a une fonction out-the-box. – Shimmy

Répondre

0

m'a permis d'améliorer ma fonction, mais je suis toujours ouvert pour des idées:

Private Shared ReadOnly SelectionModifiers() As Key = 
    New Key() { 
     Key.Left, 
     Key.Right, 
     Key.Up, 
     Key.Down, 
     Key.PageDown, 
     Key.PageUp, 
     Key.Home, 
     Key.End 
    } 

Private Shared Function IsUserSelect() As Boolean 
    If Mouse.LeftButton = MouseButtonState.Pressed Then Return True 

    If ((Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift) Then 
     Return SelectionModifiers.Any(Function(key) Keyboard.IsKeyDown(key)) 
    End If 

    Return False 
End Function 
Questions connexes