J'ai activé l'orthographe sur mon WPF richtextbox et je veux obtenir le mot mal orthographié à la position actuelle du curseur avant que le menu contextuel avec les suggestions d'orthographe soit affiché.WPF RichTextBox - Récupère le mot entier à la position actuelle du curseur
Répondre
La nouvelle façon
void richTextBox1_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Back)
{
TextPointer start = richTextBox1.CaretPosition;
string text1 = start.GetTextInRun(LogicalDirection.Backward);
TextPointer end = start.GetNextContextPosition(LogicalDirection.Backward);
string text2 = end.GetTextInRun(LogicalDirection.Backward);
richTextBox1.Selection.Select(start, end);
richTextBox1.Selection.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Black);
richTextBox1.Selection.Select(start, start);
//e.Handled = true;
}
}
Check this out http://www.dotnetfunda.com/articles/article842-spellchecker-in-wpf-.aspx
semble juste ici pour discuter des options qui peuvent aider votre scénario. « Ici, nous utilisons la classe SpellingError pour obtenir les suggessions caretIndex retourne l'index où le carat est dans la zone de texte. GetSpellingError peut retourner l'objet SpellingError que lorsque l'emplacement actuel Carat a un mot avec des erreurs et aussi SpellCheck est activé pour la zone de texte. "
l'ancienne
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Back)
{
var z = this.richTextBox1.SelectionStart;
var r = richTextBox1.Find(" ", 0, z, RichTextBoxFinds.None | RichTextBoxFinds.Reverse);
var q = this.richTextBox1.Text.Substring(r + 1, z - r - 1);
switch (q)
{
case "test":
this.richTextBox1.SelectionStart = r + 1;
this.richTextBox1.SelectionLength = z - r - 1;
this.richTextBox1.SelectionColor = Color.Black;
this.richTextBox1.SelectionStart += this.richTextBox1.SelectionLength;
this.richTextBox1.SelectionLength = 0;
//e.Handled = true;
break;
default:
this.richTextBox1.SelectionStart = z;
break;
}
}
}
'Z'? 'r'? 'q'? : O – superjos
Pour référence future:
void richTextBox1_PreviewKeyDown(object sender, KeyEventArgs e)
{
var rtb = (RichTextBox)sender;
var tr = rtb.GetSpellingErrorRange(rtb.CaretPosition);
if(tr != null)
{
string spellingerror = tr.Text;
//Do whatever
}
}
'tr'? Peut-être que donner un nom complet aux variables pourrait aider d'autres personnes à venir chercher des réponses – superjos
c'est pour wpf –