2012-12-07 3 views
0

텍스트 범위를 선택한 다음 해당 색을 녹색으로 변경하고 싶습니다.RIchTextBox에서 텍스트 범위를 선택하고 해당 속성을 변경하는 중 오류가 발생했습니다.

다음
string selectText(int index, int length) 
     { 
      TextRange textRange = new TextRange(TB.Document.ContentStart, TB.Document.ContentEnd); 
      TextPointer start = textRange.Start.GetPositionAtOffset(index, LogicalDirection.Forward); 
      TextPointer end = textRange.Start.GetPositionAtOffset(index + length, LogicalDirection.Backward); 
      TB.Selection.Select(start, end); 
      return TB.Selection.Text; 
     } 
out1.Text = selectText(6, 8); // out1 and out2 are TextBlocks 
TB.Selection.ApplyPropertyValue(RichTextBox.ForegroundProperty, Brushes.Green); // TB is the RichTextBox 
out2.Text = selectText(6, 8); 

selectText() 기능이 올바르게 작동하지만 내가 ApplyPropertyValue()를 사용할 때마다 예상대로 작동하지 않는다 : 나는 현재 이런 짓을했습니다.

위의 코드에서 out1은 "전역"을 나타내고 out1은 "glob"(RTB에서 길이 8의 위치 6에있는 부분 문자열은 "전역"임)을 보여줍니다. selectTextindexlength이 같은 경우에도 동일한 선택을 반환하지 않습니다 (이는 내가 ApplyPropertyValue 문을 제거하면 문제가 될 수 있습니다).

많은 다른 하위 문자열을 사용하여 이것을 시도했지만, out2은 항상 예상 된 선택한 텍스트의 끝에서 2자를 잘라냅니다. 왜 이런 일이 생길까요? 어떤 아이디어?

답변

0

내 질문에 대한 답변을 찾았습니다 here. 문서에서 변경된 오프셋과 관련이 있습니다.

관련 문제