Bagikan melalui


RecognizerContextRecognitionEventHandler Delegate

RecognizerContextRecognitionEventHandler Delegate

Represents the method that handles the Recognition event of a RecognizerContext object.

Definition

Visual Basic .NET Public Delegate Sub RecognizerContextRecognitionEventHandler( _
ByVal sender As Object, _
ByVal e As RecognizerContextRecognitionEventArgs _
)
C# public delegate void RecognizerContextRecognitionEventHandler(
object sender,
RecognizerContextRecognitionEventArgs e
);
Managed C++ public: __gc __delegate void RecognizerContextRecognitionEventHandler(
Object *sender,
RecognizerContextRecognitionEventArgs *e
);

Parameters

sender System.Object. [in] Specifies the source RecognizerContext object of this event.
e Microsoft.Ink.RecognizerContextRecognitionEventArgs. [in] Specifies the RecognizerContextRecognitionEventArgs object that contains the event data.

Delegate Information

Namespace Microsoft.Ink
Assembly Microsoft.Ink (microsoft.ink.dll)
Strong Name Microsoft.Ink, Version=1.7.4009.0, Culture=neutral, PublicKeyToken=a2870d9cc4d021c8

Remarks

The Recognition event occurs when the RecognizerContext has generated results from the BackgroundRecognize method.

When you create a RecognizerContextRecognitionEventHandler delegate, you identify the method that will handle the event. To associate the event with your event handler, add an instance of the delegate to the event. The event handler is called whenever the event occurs, unless you remove the delegate.

Warning: If you try to gain access to the original RecognizerContext object from the RecognizerContextRecognitionEventHandler delegate, the behavior is unpredictable. Do not attempt to do this.

Examples

[C#]

This C# example tracks each stroke made and calls the BackgroundRecognize method, which subsequently causes a recognition event to occur. The results of the recognition appear in the text box.

using System;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.Ink;

class RecognitionEventForm : System.Windows.Forms.Form
{
    private TextBox textBox1;
    InkCollector theInkCollector;
    Strokes theStrokes;
    RecognizerContext theRecognizerContext;

    public RecognitionEventForm()
    {
        // Initialize the form and the textbox.
        // Call SuspendLayout while we adjust things.
        this.textBox1 = new System.Windows.Forms.TextBox();
        this.SuspendLayout();
        this.textBox1.Dock = System.Windows.Forms.DockStyle.Bottom;
        this.textBox1.Location = new System.Drawing.Point(0, 300);
        this.textBox1.Size = new System.Drawing.Size(350, 20);
        this.textBox1.Text = "";
        this.ClientSize = new System.Drawing.Size(350, 320);
        this.Controls.AddRange(new System.Windows.Forms.Control[] {this.textBox1});
        this.Text = "Recognition Event Demo";
        this.ResumeLayout(false);

        // Create new ink collector and recognizer context
        theInkCollector = new InkCollector(Handle);
        theRecognizerContext = new RecognizerContext();

        // Initialize the recognizer's strokes
        // and assign them to the recognizer context.
        theStrokes = theInkCollector.Ink.Strokes;
        theRecognizerContext.Strokes = theStrokes;

        // Install event handlers.
        theInkCollector.Stroke +=
            new InkCollectorStrokeEventHandler(Stroke_Event);
        theRecognizerContext.Recognition +=
            new RecognizerContextRecognitionEventHandler(Recognition_Event);

        // Enable the ink collector
        theInkCollector.Enabled = true;
    }

    public static void Main()
    {
        Application.Run(new RecognitionEventForm());
    }

    // Stroke event handler
    private void Stroke_Event(object sender,
        InkCollectorStrokeEventArgs e)
    {
        // When a new stroke is collected,
        // add it to the recognizer's strokes collection.
        theStrokes.Add(e.Stroke);
        // Tell the context to recognize its strokes.
        theRecognizerContext.BackgroundRecognize();
    }

    // Recognition Event Handler
    private void Recognition_Event(object sender,
        RecognizerContextRecognitionEventArgs e)
    {
        // Update the Text box with the top string of the result
        textBox1.Text = e.Text;
    }

        // Event handler for the form's closed event
        private void RecognitionEventForm_Closed(object sender, System.EventArgs e)
        {
            theInkCollector.Dispose();
            theInkCollector = null;
            theRecognizerContext.Dispose();
            theRecognizerContext = null;
        }
}

[Visual Basic .NET]

This Microsoft® Visual Basic® .NET example tracks each stroke made and calls the BackgroundRecognize method, which subsequently causes a recognition event to occur. The results of the recognition appear in the text box.

Imports Microsoft.Ink
Public Class Form1
    Inherits System.Windows.Forms.Form

'... Code to create Form1 and TextBox1 goes here.

    Dim theInkCollector As InkCollector
    Dim theStrokes As Strokes
    Dim theRecognizerContext As RecognizerContext
    Dim theRecognitionResult As RecognitionResult

    Private Sub Stroke_Event(ByVal sender As Object, _
    ByVal e As InkCollectorStrokeEventArgs)
        'When a new stroke is collected, add it to
        'the RecognizerContext's strokes collection
        theStrokes.Add(e.Stroke)
        'Tell the RecognizerContext to recognize
        theRecognizerContext.BackgroundRecognize()
    End Sub

    Private Sub Recognize_Event( _
    ByVal sender As Object, _
    ByVal e As RecognizerContextRecognitionEventArgs)
        'Update the Text box with the top result
        TextBox1.Text = e.Text
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
        theInkCollector = New InkCollector(Handle)
        'Create new RecognizerContext
        theRecognizerContext = New RecognizerContext()
        'Initialize the recognizer's strokes
        'and assign them to the RecognizerContext
        theStrokes = theInkCollector.Ink.Strokes
        theRecognizerContext.Strokes = theStrokes
        'Add the handler for the Stroke event
        AddHandler theInkCollector.Stroke, AddressOf Stroke_Event
        'Handle Recognition event
        AddHandler theRecognizerContext.Recognition, _
        AddressOf Recognize_Event
        'Enable the ink collector
        theInkCollector.Enabled = True
    End Sub

    ' Event handler for the form's closed event
    Private Sub Form1_Closed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Closed
        theInkCollector.Dispose()
        Set theInkCollector = Nothing
        theRecognizerContext.Dispose()
        Set theRecognizerContext = Nothing
    End Sub
End Class

See Also