2010-10-14 30 views

Répondre

4

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; 
     } 
    } 
+0

c'est pour wpf –

1

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. "

1

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; 
      } 
     } 
    } 
+0

'Z'? 'r'? 'q'? : O – superjos

1

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 
    } 
} 
+1

'tr'? Peut-être que donner un nom complet aux variables pourrait aider d'autres personnes à venir chercher des réponses – superjos