텍스트 범위를 선택한 다음 해당 색을 녹색으로 변경하고 싶습니다.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에있는 부분 문자열은 "전역"임)을 보여줍니다. selectText
은 index
과 length
이 같은 경우에도 동일한 선택을 반환하지 않습니다 (이는 내가 ApplyPropertyValue
문을 제거하면 문제가 될 수 있습니다).
많은 다른 하위 문자열을 사용하여 이것을 시도했지만, out2
은 항상 예상 된 선택한 텍스트의 끝에서 2자를 잘라냅니다. 왜 이런 일이 생길까요? 어떤 아이디어?