Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 标记richTextBox的特定内容_C#_Wpf_Search_Richtextbox_Flowdocument - Fatal编程技术网

C# 标记richTextBox的特定内容

C# 标记richTextBox的特定内容,c#,wpf,search,richtextbox,flowdocument,C#,Wpf,Search,Richtextbox,Flowdocument,我想要一个richTextBox加载后的特定内容标记为有色(某些单词的“背景”改变)。当我点击一个按钮时,例如,要标记的单词car。现在我找到了这段代码,我必须重新编译它 public bool DoSearch(RichTextBox richTextBox, string searchText, bool searchNext) { TextRange searchRange; // Get the range to searc

我想要一个
richTextBox
加载后的特定内容标记为有色(某些单词的“背景”改变)。当我点击一个按钮时,例如,要标记的单词car。现在我找到了这段代码,我必须重新编译它

public bool DoSearch(RichTextBox richTextBox, string searchText, bool searchNext)
       {
            TextRange searchRange;

            // Get the range to search
            if (searchNext)
                searchRange = new TextRange(richTextBox.Selection.Start.GetPositionAtOffset(1),
                                            richTextBox.Document.ContentEnd);
            else
                searchRange = new TextRange(richTextBox.Document.ContentStart, 
                                            richTextBox.Document.ContentEnd);

            // Do the search
            TextRange foundRange = FindTextInRange(searchRange, searchText);
            if (foundRange == null)
                return false;

            // Select the found range
            richTextBox.Selection.Select(foundRange.Start, foundRange.End);
            return true;
        }

        public TextRange FindTextInRange(TextRange searchRange, string searchText)
        {
            // Search the text with IndexOf
            int offset = searchRange.Text.IndexOf(searchText);
            if (offset < 0)
                return null;  // Not found

            // Try to select the text as a contiguous range
            for (TextPointer start = searchRange.Start.GetPositionAtOffset(offset); 
                             start != searchRange.End; 
                             start = start.GetPositionAtOffset(1))
            {
                TextRange result = new TextRange(start, start.GetPositionAtOffset(searchText.Length));
                if (result.Text == searchText)
                    return result;

            }
            return null;
        }
public bool-DoSearch(RichTextBox-RichTextBox,string-searchText,bool-searchNext)
{
文本范围搜索范围;
//获取要搜索的范围
如果(搜索下一个)
searchRange=新文本范围(richTextBox.Selection.Start.GetPositionAtOffset(1),
richTextBox.Document.ContentEnd);
其他的
searchRange=新文本范围(richTextBox.Document.ContentStart,
richTextBox.Document.ContentEnd);
//搜索
text范围foundRange=findtextrange(searchRange,searchText);
if(foundRange==null)
返回false;
//选择找到的范围
richTextBox.Selection.Select(foundRange.Start,foundRange.End);
返回true;
}
公共TextRange FindTemperate(TextRange searchRange,string searchText)
{
//使用IndexOf搜索文本
int offset=searchRange.Text.IndexOf(searchText);
如果(偏移量<0)
返回null;//未找到
//尝试选择文本作为连续范围
for(TextPointer start=searchRange.start.GetPositionAtOffset(偏移量);
开始!=搜索范围。结束;
start=start.GetPositionAtOffset(1))
{
TextRange结果=新的TextRange(start,start.GetPositionAtOffset(searchText.Length));
if(result.Text==searchText)
返回结果;
}
返回null;
}

有人能帮我吗?

请尝试此链接,它包含一个函数HighlightPhrase,可以更改Rich textbox中特定单词的颜色。遵循此函数,尝试研究如何更改背景


我想更改
richtextbox
中单词的背景。有了这段代码,我可以搜索一个单词,现在我必须将它插入到flowdocument中,更改背景并将其返回到richtextbox之前的相同位置。但是我不知道我该怎么做。流程文件从哪里来?你当然不需要。我想我需要一个
流程文档。在程序开始时,我在
Richtextbox
中加载了一个.txt文件,其中包含
FlowDocument
。这个问题帮助我。。。傻瓜们对WPF一无所知。像他们这样的一些人正在破坏stackoverflow…它适用于windows窗体,但SelectionStart、SelectionColor、SelectionLength在WPF中不可用它在WPF中如何工作?