Partager via


InkEdit.Gesture, événement

Mise à jour : November 2007

Se produit lorsqu'un mouvement d'application est reconnu.

Espace de noms :  Microsoft.Ink
Assembly :  Microsoft.Ink (dans Microsoft.Ink.dll)

Syntaxe

'Déclaration
Public Event Gesture As InkEditGestureEventHandler
'Utilisation
Dim instance As InkEdit
Dim handler As InkEditGestureEventHandler

AddHandler instance.Gesture, handler
public event InkEditGestureEventHandler Gesture
public:
 event InkEditGestureEventHandler^ Gesture {
    void add (InkEditGestureEventHandler^ value);
    void remove (InkEditGestureEventHandler^ value);
}
/** @event */
public void add_Gesture (InkEditGestureEventHandler value)
/** @event */
public void remove_Gesture (InkEditGestureEventHandler value)
JScript ne prend pas en charge les événements.

Notes

Le gestionnaire d'événements reçoit un argument de type InkEditGestureEventArgs qui contient des données concernant cet événement.

Lorsque vous créez un délégué InkEditGestureEventHandler, vous identifiez la méthode qui gère l'événement. Pour associer l'événement au gestionnaire d'événements, ajoutez une instance du délégué à l'événement. Le gestionnaire d'événements est appelé chaque fois qu'un événement se produit, sauf si vous supprimez le délégué.

Pour que cet événement se produise, le contrôle InkEdit doit avoir un intérêt dans un ensemble de mouvements d'application. Pour définir l'intérêt du contrôle InkEdit dans un ensemble de mouvements, appelez la méthode InkEdit.SetGestureStatus. Le contrôle InkEdit ne reconnaît pas les mouvements de trait multiples.

Pour obtenir la liste des mouvements d'application spécifiques, consultez le type énumération ApplicationGesture. Pour plus d'informations sur les mouvements d'application, consultez Using Gestures et Command Input on the Tablet PC.

Le contrôle InkEdit a un intérêt par défaut et des actions pour les mouvements suivants :

Mouvement

Action

En bas, à gauche ; en bas à gauche (trait long)

Entrée

Droite

Espace

Gauche

Retour arrière

En haut, à droite ; en haut, à droite (trait long)

Tabulation

Dans le contrôle InkEdit, un événement Gesture n'est déclenché que si le mouvement est le premier trait depuis le dernier appel à la méthode Recognize ou le dernier déclenchement du délai d'attente de reconnaissance.

Si l'événement Gesture est annulé, l'événement Stroke est déclenché pour les objets Stroke qui ont déclenché l'événement Gesture.

Pour modifier l'action par défaut d'un mouvement

  • Ajoutez des gestionnaires d'événements pour les événements Gesture et Stroke.

  • Dans le gestionnaire d'événements Gesture, annulez l'événement Gesture du mouvement et exécutez l'autre action pour le mouvement.

  • Dans le gestionnaire d'événements Stroke, annulez l'événement Stroke pour l'objet Stroke qui a déclenché l'événement Gesture annulé.

Exemples

Cet exemple montre comment s'abonner à l'événement Gesture et à l'événement Stroke pour enrichir les fonctionnalités d'un ApplicationGesture.

Lorsque l'événement Gesture se déclenche, il examine le mouvement et l'état actuel du contrôle InkEdit. Si nécessaire, le comportement du mouvement est modifié et l'événement est annulé.

Private Sub mInkEdit_Gesture(ByVal sender As Object, ByVal e As InkEditGestureEventArgs)
    ' There might be more than one gesture passed in InkEditGestureEventArgs
    ' The gestures are arranged in order of confidence from most to least
    ' This event handler is only concerned with the first (most confident) gesture
    ' and only if the gesture is ApplicationGesture.Left with strong confidence
    Dim G As Gesture = e.Gestures(0)
    If (ApplicationGesture.Left = G.Id And RecognitionConfidence.Strong = G.Confidence) Then
        Dim pInkEdit As InkEdit = DirectCast(sender, InkEdit)
        ' by default, ApplicationGesture.Left maps to Backspace
        ' If the insertion point is at the beginning of the text
        ' and there is no text selected, then Backspace does not do anything.
        ' In this case, we will alter the gesture to map to Delete instead
        If (0 = pInkEdit.SelectionStart And 0 = pInkEdit.SelectionLength And pInkEdit.Text.Length > 0) Then
            ' take out the first character of the string
            pInkEdit.Text = pInkEdit.Text.Remove(0, 1)
            ' save the stroke ID in a class level var for use in the Stroke event
            Me.mStrokeID = e.Strokes(0).Id
            ' cancel the gesture so it won't perform the default action
            e.Cancel = True
        End If
    End If
End Sub
private void mInkEdit_Gesture(object sender, InkEditGestureEventArgs e)
{
    // There might be more than one gesture passed in InkEditGestureEventArgs
    // The gestures are arranged in order of confidence from most to least
    // This event handler is only concerned with the first (most confident) gesture
    // and only if the gesture is ApplicationGesture.Left with strong confidence
    Gesture G = e.Gestures[0];
    if (ApplicationGesture.Left == G.Id &&  RecognitionConfidence.Strong == G.Confidence)
    {
        InkEdit pInkEdit = (InkEdit)sender;

        // by default, ApplicationGesture.Left maps to Backspace
        // If the insertion point is at the beginning of the text
        // and there is no text selected, then Backspace does not do anything.
        // In this case, we will alter the gesture to map to Delete instead
        if (0 == pInkEdit.SelectionStart && 0 == pInkEdit.SelectionLength && pInkEdit.Text.Length > 0)
        {
            // take out the first character of the string
            pInkEdit.Text = pInkEdit.Text.Remove(0, 1);
            // save the stroke ID in a class level var for use in the Stroke event
            this.mStrokeID = e.Strokes[0].Id;
            // cancel the gesture so it won't perform the default action
            e.Cancel = true;
        }
    }
}

Lorsque l'événement Stroke se déclenche, il est annulé si le trait a été utilisé pour générer le mouvement dont le comportement a été modifié dans l'événement Gesture. Cela évite le rendu du trait.

Private Sub mInkEdit_Stroke(ByVal sender As Object, ByVal e As InkEditStrokeEventArgs)
    e.Cancel = (e.Stroke.Id = Me.mStrokeID)
End Sub
private void mInkEdit_Stroke(object sender, InkEditStrokeEventArgs e)
{
    e.Cancel = (e.Stroke.Id == this.mStrokeID);
}

Plateformes

Windows Vista

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Informations de version

.NET Framework

Pris en charge dans : 3.0

Voir aussi

Référence

InkEdit, classe

Membres InkEdit

Microsoft.Ink, espace de noms

InkEditGestureEventArgs

ApplicationGesture

InkEdit.SetGestureStatus

InkEdit.RecoTimeout