RecognizerContext.Recognition Event
RecognizerContext.Recognition Event |
Occurs when the RecognizerContext has generated results from the BackgroundRecognize method.
Definition
Visual Basic .NET Public Event Recognition As RecognizerContextRecognitionEventHandler C# public event RecognizerContextRecognitionEventHandler Recognition; Managed C++ public: __event RecognizerContextRecognitionEventHandler Recognition;
Remarks
The event handler receives an argument of type RecognizerContextRecognitionEventArgs containing data about this event.
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.
The behavior of the API is unpredictable if you try to gain access to the original RecognizerContext object from the recognition 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.
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