Condividi tramite


Evento InkEdit.Gesture

Aggiornamento: novembre 2007

Si verifica quando viene riconosciuto un movimento dell'applicazione.

Spazio dei nomi:  Microsoft.Ink
Assembly:  Microsoft.Ink (in Microsoft.Ink.dll)

Sintassi

'Dichiarazione
Public Event Gesture As InkEditGestureEventHandler
'Utilizzo
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 non supporta gli eventi.

Note

Il gestore eventi riceve un argomento di tipo InkEditGestureEventArgs contenente i dati relativi a questo evento.

Quando si crea un delegato InkEditGestureEventHandler, viene identificato il metodo che gestisce l'evento. Per associare l'evento al gestore in uso, aggiungere all'evento un'istanza del delegato. Il gestore eventi viene chiamato ogni volta che si verifica l'evento, a meno che non si rimuova il delegato.

Affinché questo evento si verifichi, il controllo InkEdit deve esprimere un interesse per un insieme di movimenti dell'applicazione. Per impostare l'interesse del controllo InkEdit per un insieme di movimenti, chiamare il metodo InkEdit.SetGestureStatus. Il controllo InkEdit non riconosce più movimenti del tratto.

Per un elenco di movimenti specifici dell'applicazione, vedere il tipo di enumerazione ApplicationGesture. Per ulteriori informazioni sui movimenti dell'applicazione, vedere Using Gestures e Command Input on the Tablet PC.

Il controllo InkEdit dispone di interesse predefinito e delle relative azioni per i movimenti seguenti.

Movimento

Azione

In basso a sinistra, lungo il lato in basso a sinistra

Invio

Destra

Spazio

Sinistra

Backspace

In altro a destra, lungo il lato in alto a destra

Tab

Nel controllo InkEdit, viene generato un evento Gesture solo se il movimento è il primo tratto dall'ultima chiamata al metodo Recognize o dall'ultima generazione del timeout del riconoscimento.

Se l'evento Gesture viene annullato, viene generato l'evento Stroke per gli oggetti Stroke che hanno generato l'evento Gesture.

Per modificare l'azione predefinita per un movimento

  • Aggiungere i gestori eventi per gli eventi Gesture e Stroke.

  • Nel gestore eventi Gesture, annullare l'evento Gesture per il movimento ed eseguire l'azione alternativa per il movimento.

  • Nel gestore eventi Stroke, annullare l'evento Stroke per l'oggetto Stroke che ha generato l'evento Gesture annullato.

Esempi

In questo esempio viene illustrato come sottoscrivere l'evento Gesture e l'evento Stroke per aumentare la funzionalità di un oggetto ApplicationGesture.

Quando viene generato l'evento Gesture, vengono esaminati il movimento e lo stato corrente del controllo InkEdit. Se necessario, il comportamento del movimento viene modificato e l'evento viene annullato.

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;
        }
    }
}

Quando viene generato l'evento Stroke, l'evento viene annullato se il tratto è quello utilizzato per generare il movimento il cui comportamento è stato modificato nell'evento Gesture. Impedisce l'esecuzione del rendering del tratto.

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);
}

Piattaforme

Windows Vista

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Informazioni sulla versione

.NET Framework

Supportato in: 3.0

Vedere anche

Riferimenti

InkEdit Classe

Membri InkEdit

Spazio dei nomi Microsoft.Ink

InkEditGestureEventArgs

ApplicationGesture

InkEdit.SetGestureStatus

InkEdit.RecoTimeout