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中如何工作?