none
RichTextBox,怎么用c#代码根据Index和Length指定的范围的内容进行变色或加粗处理? RRS feed

  • 问题

  • 如题,不会添加有图片和表格一类的对象,只有文字对象,Richboxtext内容是从文件读取存入的,读取的时候是纯文本。我想根据围绕Richtextbox内容的纯文本和index和length进行外观处理,如何根据Index和Length两个int变量,对指定位置所包含的文字进行更改外观处理,例如变色,加粗?





    • 已编辑 Trian555 2019年9月14日 3:45
    2019年9月14日 2:04

答案

  • 如题,不会添加有图片和表格一类的对象,只有文字对象,Richboxtext内容是从文件读取存入的,读取的时候是纯文本。我想根据围绕Richtextbox内容的纯文本和index和length进行外观处理,如何根据Index和Length两个int变量,对指定位置所包含的文字进行更改外观处理,例如变色,加粗?






    Hi   Trian555,

    你可以尝试下面的方式,根据index 和length 获取生成一个TextRange,然后修改属性。

             
      TextRange text = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
                TextPointer current = text.Start.GetInsertionPosition(LogicalDirection.Forward);
                string textInRun = current.GetTextInRun(LogicalDirection.Forward);
                if (!string.IsNullOrWhiteSpace(textInRun))
                {
    
                    TextPointer selectionStart = current.GetPositionAtOffset(index, LogicalDirection.Forward);
                    TextPointer selectionEnd = selectionStart.GetPositionAtOffset( Length, LogicalDirection.Forward);
                    TextRange selection = new TextRange(selectionStart, selectionEnd);
                    selection.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);
                }




    Best regards

    Yong Lu

    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 Trian555 2019年9月17日 6:16
    2019年9月16日 6:40
    版主