2013-08-15 5 views
3

Windows Form 응용 프로그램을 개발 중입니다. 나는 RichTextBox.LoadFile 메서드를 사용하여 파일에서 텍스트를로드하고 텍스트의 일부분을 강조 표시합니다. 파일의 텍스트는 리턴 문자를 포함합니다.RichTextBox.Select와 SubString 메서드가 일치하지 않습니다.

the highlight을 강조 표시한다고 가정합니다. 먼저 startIndexlengththe highlight 부분 인 것을 확인한 다음 RichTextBox.Select(startIndex, length)을 사용하고 색상을 지정합니다.

SubString 방법을 사용할 때 정확한 텍스트를 찾을 수 있습니다. 그러나 동일한 값인 startIndexlengthSelect 방법에 적용하면 강조 표시된 부분은 [space][space][space]the highli이됩니다. Select 메서드는 일부 반환 문자를 고려하여 문제가있는 것으로 보입니다.

어떻게 해결할 수 있습니까?

+0

에 강조 "\ 연구 \ n"'그 (문자) 0x0A'다음'(문자) 0x0D'입니다 '또는 하나의''\ r ''또는 하나의''\ n "'하나 하나의"반환 "마다? –

+0

안녕하세요 Jeppe. 원본 파일은'\ r'과'\ n'을 포함합니다. Windows에서 처리되는 텍스트 파일입니다. – bxx

답변

0

처음으로 나는 그것에 대해 듣고 나는 richTextBox을 많이 사용합니다. SubString을 사용하여 파일의 문자열 대신 richTextBox.Text에 원하는 부분 문자열을 찾으십시오. 만약 당신이 이미 그것을 가지고 있다면, substring 메소드로부터 리턴 번호를 체크하여 그것이 올바른 위치를 참조 하는지를 확인하십시오.

또한 코드를 공유하십시오. 직접 확인하고 싶습니다.

int nextStartIndex; 
public void Find(string keyword){ 
    int i = richTextBox1.Find(keyword, nextStartIndex, RichTextBoxFinds.None); 
    if(i != -1) { 
     nextStartIndex = i + keyword.Length;   
    } 
} 
+1

설명이 있어야합니다 ..... – I4V

+0

richTextBox.Text.Substring (startIndex, length)을 사용하면 정확한 결과를 얻을 수 있습니다. 하지만 그렇다면 richTextBox (startIndex, length)를 사용합니다. 올바르게 선택되지 않았습니다. 그것은 내 질문에 설명 된 것과 같은 몇 가지 공백을 추가합니다. – bxx

1

을 갈 필요가 파일은 일반적인 윈도우 시퀀스를 '포함하는 경우를 RichTextBox의 텍스트는 당신이 알아 RED

private void ColoritRed(RichTextBox rtb, string StringToHighlight) 
    { 
     int pos = 0; 
     string searchText = StringToHighlight; 
     pos = rtb.Find(searchText); 
     while (pos != -1) 
     { 
      if (rtb.SelectedText == searchText) 
      { 
       this.ActiveControl = rtb; 
       rtb.SelectionStart = pos; 
       rtb.SelectionLength = searchText.Length; 
       rtb.SelectionColor = Color.Red; 
      } 
      pos = rtb.Find(searchText, pos + 1, RichTextBoxFinds.MatchCase); 
     } 
0

이 내가 특정에 대해 "검색"을하는 방법이다 : 그것은 닷넷 문제는 다음 경우에 나는 당신이 RichTextBoxFind() 방법을 사용한다고 생각 ... 내 작품을 통해