Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var start = MyRichTextBox.Document.ContentStart;
- var startPos = start.GetPositionAtOffset(3);
- var endPos = start.GetPositionAtOffset(8);
- var textRange = new TextRange(startPos,endPos);
- textRange.ApplyPropertyValue(TextElement.ForegroundProperty,
- new SolidColorBrush(Colors.Blue));
- textRange.ApplyPropertyValue(TextElement.FontWeightProperty,
- FontWeights.Bold);
- private static TextPointer GetPoint(TextPointer start, int x)
- {
- var ret = start;
- var i = 0;
- while (i < x && ret != null)
- {
- if (ret.GetPointerContext(LogicalDirection.Backward) ==
- TextPointerContext.Text ||
- ret.GetPointerContext(LogicalDirection.Backward) ==
- TextPointerContext.None)
- i++;
- if (ret.GetPositionAtOffset(1,
- LogicalDirection.Forward) == null)
- return ret;
- ret = ret.GetPositionAtOffset(1,
- LogicalDirection.Forward);
- }
- return ret;
- }
- Colorize(item.Offset, item.Text.Length, Colors.Blue);
- private void Colorize(int offset, int length, Color color)
- {
- var textRange = MyRichTextBox.Selection;
- var start = MyRichTextBox.Document.ContentStart;
- var startPos = GetPoint(start, offset);
- var endPos = GetPoint(start, offset + length);
- textRange.Select(startPos, endPos);
- textRange.ApplyPropertyValue(TextElement.ForegroundProperty,
- new SolidColorBrush(color));
- textRange.ApplyPropertyValue(TextElement.FontWeightProperty,
- FontWeights.Bold);
- }
- var textRange = MyRichTextBox.Selection;
- var start = MyRichTextBox.Document.ContentStart;
- var startPos = start.GetPositionAtOffset(3);
- var endPos = start.GetPositionAtOffset(8);
- textRange.Select(startPos, endPos);
- textRange.ApplyPropertyValue(TextElement.ForegroundProperty, new SolidColorBrush(Colors.Blue));
- textRange.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);
- private static TextPointer GetPoint(TextPointer start, int x)
- {
- var ret = start;
- var i = 0;
- while (ret != null)
- {
- string stringSoFar = new TextRange(ret, ret.GetPositionAtOffset(i, LogicalDirection.Forward)).Text;
- if (stringSoFar.Length == x)
- break;
- i++;
- if (ret.GetPositionAtOffset(i, LogicalDirection.Forward) == null)
- return ret.GetPositionAtOffset(i-1, LogicalDirection.Forward)
- }
- ret=ret.GetPositionAtOffset(i, LogicalDirection.Forward);
- return ret;
- }
- <Grid FocusManager.IsFocusScope="True">...</Grid>
- private void Colorize(int offset, int length, Color color)
- {
- var textRange = MyRichTextBox.Selection;
- var start = MyRichTextBox.Document.ContentStart;
- var startPos = GetPoint(start, offset);
- var endPos = GetPoint(start, offset + length);
- textRange.Select(startPos, endPos);
- }
- <RichTextBox FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}">...</RichTextBox>
- private static TextPointer GetPositionAtCharOffset(TextPointer start, int numbertOfChars)
- {
- var offset = start;
- int i = 0;
- string stringSoFar="";
- while (stringSoFar.Length < numbertOfChars)
- {
- i++;
- TextPointer offsetCandidate = start.GetPositionAtOffset(
- i, LogicalDirection.Forward);
- if (offsetCandidate == null)
- return offset; // ups.. we are to far
- offset = offsetCandidate;
- stringSoFar = new TextRange(start, offset).Text;
- }
- return offset;
- }
- stringSoFar = stringSoFar.Replace("rn", "")
- .Replace(" ", "")
- var startPos = GetPoint(start, offset);
- var endPos = GetPoint(start, offset + length);
- var startPos = GetPoint(start, offset);
- var endPos = GetPoint(startPos, length);
- private static TextRange GetTextRange(TextPointer start, int startIndex, int length)
- {
- var rangeStart = GetPositionAtCharOffset(start, startIndex);
- var rangeEnd = GetPositionAtCharOffset(rangeStart, length);
- return new TextRange(rangeStart, rangeEnd);
- }
- var range = GetTextRange(Document.ContentStart, 3, 8);
- range.ApplyPropertyValue(
- TextElement.BackgroundProperty,
- new SolidColorBrush(Colors.Aquamarine));
- TextPointer startPos = rtb.Document.ContentStart.GetPositionAtOffset(searchWordIndex, LogicalDirection.Forward);
- startPos = startPos.CorrectPosition(searchWord, FindDialog.IsCaseSensitive);
- if (startPos != null)
- {
- TextPointer endPos = startPos.GetPositionAtOffset(textLength, LogicalDirection.Forward);
- if (endPos != null)
- {
- rtb.Selection.Select(startPos, endPos);
- }
- }
- public static TextPointer CorrectPosition(this TextPointer position, string word, bool caseSensitive)
- {
- TextPointer start = null;
- while (position != null)
- {
- if (position.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.Text)
- {
- string textRun = position.GetTextInRun(LogicalDirection.Forward);
- int indexInRun = textRun.IndexOf(word, caseSensitive ? StringComparison.InvariantCulture : StringComparison.InvariantCultureIgnoreCase);
- if (indexInRun >= 0)
- {
- start = position.GetPositionAtOffset(indexInRun);
- break;
- }
- }
- position = position.GetNextContextPosition(LogicalDirection.Forward);
- }
- return start;
- }
- private TextPointer GetPoint(TextPointer start, int pos)
- {
- var ret = start;
- int i = 0;
- while (i < pos)
- {
- if (ret.GetPointerContext(LogicalDirection.Forward) ==
- TextPointerContext.Text)
- i++;
- if (ret.GetPositionAtOffset(1, LogicalDirection.Forward) == null)
- return ret;
- ret = ret.GetPositionAtOffset(1, LogicalDirection.Forward);
- }
- return ret;
- }
- private void SelectText(int start, int length)
- {
- TextRange textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
- TextPointer pointerStart = textRange.Start.GetPositionAtOffset(start, LogicalDirection.Forward);
- TextPointer pointerEnd = textRange.Start.GetPositionAtOffset(start + length, LogicalDirection.Backward);
- richTextBox.Selection.Select(pointerStart, pointerEnd);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement