This documentation is archived and is not being maintained.

RecognizerContextRecognitionWithAlternatesEventHandler Delegate

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

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

public delegate void RecognizerContextRecognitionWithAlternatesEventHandler(
	Object sender,
	RecognizerContextRecognitionWithAlternatesEventArgs e


Type: System.Object

The source RecognizerContext object of this event.

Type: Microsoft.Ink.RecognizerContextRecognitionWithAlternatesEventArgs

The RecognizerContextRecognitionWithAlternatesEventArgs object that contains the event data.

The RecognitionWithAlternates event occurs when the RecognizerContext generates results after calling the BackgroundRecognizeWithAlternates method.

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.


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.

In this example, each stroke made in an InkOverlay object is automatically recognized and the recognition results (including alternates) displayed.

During application startup, the RecognizerContext object is instantiated, and event handlers are assigned.

// create a new RecognizerContext object 
// the object's Strokes property is initialized to null
mRecognizerContext = new RecognizerContext();
// assign the Strokes property by creating a fresh Strokes collection 
mRecognizerContext.Strokes = mInkOverlay.Ink.CreateStrokes();
// subscribe to the Strokes event. It is during this event 
// that we can add strokes to the RecognizerContext
mInkOverlay.Stroke += new InkCollectorStrokeEventHandler(mInkOverlay_Stroke1);
// subscribe to the the RecognitionWithAlternates event.  
// This event is fired when background recognition is complete,  
// and recognition results (with alternates) are available
mRecognizerContext.RecognitionWithAlternates += 
    new RecognizerContextRecognitionWithAlternatesEventHandler(mRecognizerContext_RecognitionWithAlternates);

When the Stroke event fires (in response to the user completing a stroke), the newly created stroke is added to the Strokes collection of the RecognizerContext object, and the BackgroundRecognizeWithAlternates method is called.

private void mInkOverlay_Stroke1(object sender, InkCollectorStrokeEventArgs e)
    // in case background recognition is still occurring, stop it
    // add the stroke, and start recognition

When background recognition is complete, the RecognitionWithAlternates event fires. During handling of this event, the results of the recognition (including alternates) are placed in a list box.

// event fires when recognition results (with alternates) are ready 
private void mRecognizerContext_RecognitionWithAlternates(object sender, RecognizerContextRecognitionWithAlternatesEventArgs e)
    // when updating a control, must use Invoke() since controls are 
    // not thread safe and recognition occurs on a different thread 
    if (this.InvokeRequired)
        // recursively call this method via Invoke() 
            new RecognizerContextRecognitionWithAlternatesEventHandler(mRecognizerContext_RecognitionWithAlternates),
            new object[] { sender, e }
    if (RecognitionStatus.NoError == e.RecognitionStatus)
        // show the top alternate
        listBoxRecognitionResults.Items.Add("TOP:" + e.Result.TopAlternate.ToString());
        // get the rest of the alternates
        RecognitionAlternates allAlternates = e.Result.GetAlternatesFromSelection();
        // show each of the other alternates 
        foreach (RecognitionAlternate oneAlternate in allAlternates)
            listBoxRecognitionResults.Items.Add("ALT:" + oneAlternate.ToString());

Windows 7, Windows Vista, Windows Server 2008 R2, Windows Server 2008

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.0