Compartir a través de


RecognizerContext.RecognitionWithAlternates Event

Occurs when the RecognizerContext object has generated results after calling the BackgroundRecognizeWithAlternates method.

Namespace: Microsoft.Ink
Assembly: Microsoft.Ink (in microsoft.ink.dll)

Syntax

'Declaration
Public Event RecognitionWithAlternates As RecognizerContextRecognitionWithAlternatesEventHandler
'Usage
Dim instance As RecognizerContext
Dim handler As RecognizerContextRecognitionWithAlternatesEventHandler

AddHandler instance.RecognitionWithAlternates, handler
public event RecognizerContextRecognitionWithAlternatesEventHandler RecognitionWithAlternates
public:
event RecognizerContextRecognitionWithAlternatesEventHandler^ RecognitionWithAlternates {
    void add (RecognizerContextRecognitionWithAlternatesEventHandler^ value);
    void remove (RecognizerContextRecognitionWithAlternatesEventHandler^ value);
}
/** @event */
public void add_RecognitionWithAlternates (RecognizerContextRecognitionWithAlternatesEventHandler value)

/** @event */
public void remove_RecognitionWithAlternates (RecognizerContextRecognitionWithAlternatesEventHandler value)
In JScript, you can handle the events defined by a class, but you cannot define your own.
Not applicable.

Remarks

The event handler receives an argument of type RecognizerContextRecognitionWithAlternatesEventArgs containing data about this event.

When you create a RecognizerContextRecognitionWithAlternatesEventHandler delegate, you identify the method that handles 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.

The behavior of the application programming interface (API) is unpredictable if you try to gain access to the original RecognizerContext object from the RecognitionWithAlternates event handler. Do not attempt to do this. Instead, if you need to do this, create a flag and set it in the Recognition event handler. Then you can poll that flag to determine when to change the RecognizerContext properties outside of the event handler.

Example

This C# example calls the BackgroundRecognizeWithAlternates method as the InkCollector object, theInkCollector, collects each Stroke object. This causes a RecognitionWithAlternates event. In the RecognitionWithAlternates event handler, the example displays the recognition results along with all of the alternates—in descending order of confidence—in a list box, listAlternates, as they are generated.

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

class RecognitionWithAlternatesEventForm : System.Windows.Forms.Form
{
    private ListBox listAlternates;
    InkCollector theInkCollector;
    Strokes theStrokes;
    RecognizerContext theRecognizerContext;
    RecognitionResult theRecognitionResult;

    public RecognitionWithAlternatesEventForm()
    {
        // Initialize the form and the textbox.
        // Call SuspendLayout while we adjust things.
        this.listAlternates = new System.Windows.Forms.ListBox();
        this.SuspendLayout();
        this.listAlternates.Dock = System.Windows.Forms.DockStyle.Bottom;
        this.listAlternates.Location = new System.Drawing.Point(0, 200);
        this.listAlternates.Size = new System.Drawing.Size(350, 120);
        this.ClientSize = new System.Drawing.Size(350, 320);
        this.Controls.AddRange(new System.Windows.Forms.Control[] {this.listAlternates});
        this.Text = "RecognitionWithAlternates 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.RecognitionWithAlternates +=
            new RecognizerContextRecognitionWithAlternatesEventHandler(
            RecognitionWithAlternates_Event);

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

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

    // 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.BackgroundRecognizeWithAlternates();
    }

    // Recognition Event Handler
    private void RecognitionWithAlternates_Event(
        object sender,
        RecognizerContextRecognitionWithAlternatesEventArgs e)
    {
        theRecognitionResult = e.Result;
        RecognitionAlternates theRecognitionAlternates =
            theRecognitionResult.GetAlternatesFromSelection(0, -1);
        // Update the Text box with the top string of the result
        listAlternates.Items.Clear();
        foreach (RecognitionAlternate theRecognitionAlternate in theRecognitionAlternates)
        {
            listAlternates.Items.Add(theRecognitionAlternate.ToString());
        }
    }

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

This Microsoft® Visual Basic® .NET example calls the BackgroundRecognizeWithAlternates method as the InkCollector object, theInkCollector, collects each Stroke object. This causes a RecognitionWithAlternates event. In the RecognitionWithAlternates event handler, the example displays the recognition results along with all of the alternates—in descending order of confidence—in a list box, listAlternates, as they are generated.

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

'... Code for initializing Form1 and ListBox1 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.BackgroundRecognizeWithAlternates()
    End Sub

    Private Sub RecognizeWithAlternates_Event( _
    ByVal sender As Object, _
    ByVal e As RecognizerContextRecognitionWithAlternatesEventArgs)
        'Clear the listbox
        ListBox1.Items.Clear()
        'Get the set of alternates from the entire
        'result selection.
        theRecognitionResult = e.Result
        Dim theRecognitionAlternates As RecognitionAlternates
        theRecognitionAlternates = theRecognitionResult.GetAlternatesFromSelection(0, -1)
        'Update the list box with the alternates
        Dim theRecognitionAlternate As RecognitionAlternate
        For Each theRecognitionAlternate In theRecognitionAlternates
            ListBox1.Items.Add(theRecognitionAlternate.ToString())
        Next
    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.RecognitionWithAlternates, _
        AddressOf RecognizeWithAlternates_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

Platforms

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

Version Information

.NET Framework

Supported in: 3.0

See Also

Reference

RecognizerContext Class
RecognizerContext Members
Microsoft.Ink Namespace
RecognitionResult
Microsoft.Ink.RecognizerContext.BackgroundRecognizeWithAlternates
RecognizerContext.Recognize