2014-04-03 5 views
0

RichTextBox에서 특정 단어의 색을 변경하려고합니다. 마지막으로 코드를 잘게 잘랐지만 지금은 문제가 있습니다. 이 코드는 RichTextBox의 첫 번째 "NULL"만 채색합니다.RichTextBox에서 특정 단어에 색칠

해결책을 찾도록 도와 줄 수 있습니까?

도움 주셔서 감사합니다.

private void searchWord() 
    { 
     String search = "NULL"; 
     TextPointer text = RTBAuftrag.Document.ContentStart; 
     while (true) 
     { 
      TextPointer next = text.GetNextContextPosition(LogicalDirection.Forward); 
      if (next == null) 
      { 
       break; 
      } 

      TextRange txt = new TextRange(text, next); 

      int indx = txt.Text.IndexOf(search); 
      if (indx > 0) 
      { 
       TextPointer sta = text.GetPositionAtOffset(indx); 
       TextPointer end = text.GetPositionAtOffset(indx + search.Length); 
       TextRange textR = new TextRange(sta, end); 
       textR.ApplyPropertyValue(TextElement.BackgroundProperty, new SolidColorBrush(Colors.Red)); 
      } 
      text = next; 
     } 
    } 

누군가 가능한 방법을 알고 있습니까?

답변

0

메신저 내 질문에 대한 답변을 나만의 것입니다! 마침내 나는 내 문제에 대한 훌륭한 해결책을 발견했다.

I`ve 코드-PROJEKT에 좋은 강력한의 UserControl을 발견 http://www.codeproject.com/Articles/42490/Using-AvalonEdit-WPF-Text-Editor

하면 마지막 솔루션 내 방법이되었다

내 .XML이 추가

xmlns:avalonEdit="http://icsharpcode.net/sharpdevelop/avalonedit" 

그리고이

<avalonEdit:TextEditor Visibility="Hidden" x:Name="RTBAuftragNEU" Margin="32,413,243,279" KeyDown="RTBKunde_KeyDown" Panel.ZIndex="1" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled" > </avalonEdit:TextEditor> 

다음을 입력하십시오. 내가 필요로하는 곳.

 using (Stream s = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("ConsultingControls.highlight.xshd")) 
     { 
      using (XmlTextReader reader = new XmlTextReader(s)) 
      { 
       RTBAuftragNEU.SyntaxHighlighting = HighlightingLoader.Load(reader, HighlightingManager.Instance); 
      } 
     } 

구문에 대한 XSHD 파일을 만드는 것을 잊지 마십시오. codeproject 사이트에서 전체 자습서를 찾을 수 있습니다.

인사말, 프리 돌린