Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uygulama sözlüğü oluşturmak için, RecognizerContext nesnesinin WordList özelliğini ayarlamak gerekir. InkEdit denetimi RecognizerContext nesnesini kullanıma sunmaz, bu nedenle InkEdit denetiminin RecognizerContext nesnesinin WordList özelliğini doğrudan ayarlamak mümkün değildir.
InkEdit denetimiyle uygulama sözlüğü kullanmak için, vuruşları InkEdit denetiminden çıkarın, bunları yeni bir RecognizerContext nesnesine aktarın ve WordList özelliğini uygulama sözlüğünü içeren bir WordList olarak ayarlayın. Sonuçları bu RecognizerContext nesnesinden depolayın ve ardından sonuçları InkEdit denetimine geri geçirin.
Örnek
Aşağıdaki C# kodu bu tekniğin bir örneğini gösterir.
private RecognizerContext rc;
private WordList wl;
private int wlSelStart;
private int wlSelLen;
private bool isRecoPending = false;
private void Form1_Load(object sender, EventArgs e)
{
//event handlers must be attached for dictionary to work.
inkEdit1.Recognition += new Microsoft.Ink.InkEditRecognitionEventHandler(inkEdit1_Recognition);
inkEdit1.TextChanged += new EventHandler(inkEdit1_TextChanged);
//create a WordList that contains the application dictionary
wl = new WordList();
//...
//Add dictionary terms to the WordList
//...
// create a RecognizerContext for the WordList
rc = inkEdit1.Recognizer.CreateRecognizerContext();
rc.Factoid = Factoid.WordList;
//set the RecognizerContext WordList to the newly created WordList
rc.WordList = wl;
//create a delegate for the new RecognizerContext
rc.RecognitionWithAlternates += new
RecognizerContextRecognitionWithAlternatesEventHandler(rc_Recognition);
}
void inkEdit1_TextChanged(object sender, EventArgs e)
{
if (isRecoPending)
{
isRecoPending = false;
rc.BackgroundRecognizeWithAlternates();
}
}
private void inkEdit1_Recognition(object sender,
Microsoft.Ink.InkEditRecognitionEventArgs e)
{
//store the start of the selection in wlSelStart
wlSelStart = inkEdit1.SelectionStart;
//store the length of the selection in wlSelLen
wlSelLen = e.RecognitionResult.TopString.Length;
//copy the strokes from the InkEdit control into the new
// RecognizerContext
rc.Strokes = e.RecognitionResult.Strokes.Ink.Clone().Strokes;
isRecoPending = true;
}
private void rc_Recognition(object sender,
Microsoft.Ink.RecognizerContextRecognitionWithAlternatesEventArgs e)
{
if (inkEdit1.InvokeRequired)
{
inkEdit1.Invoke(new RecognizerContextRecognitionWithAlternatesEventHandler(rc_Recognition),
new object[] { sender, e });
return;
}
//set the insertion point in the InkEdit control
inkEdit1.SelectionStart = wlSelStart;
inkEdit1.SelectionLength = wlSelLen;
//insert the result from the new RecognizerContext
//into the InkEdit control
inkEdit1.SelectedText = e.Result.TopString;
inkEdit1.SelectionStart = inkEdit1.SelectionStart +
e.Result.TopString.Length;
}
// Event handler for the form's closed event
private void Form1_Closed(object sender, System.EventArgs e)
{
inkEdit1.Dispose();
inkEdit1 = null;
rc.Dispose();
rc = null;
}
İlgili konular