自动突出显示TextBox或RichTextBox中的一部分文本

时间:2019-11-01 09:30:08

标签: c# wpf textbox

是否可以突出显示文本的一部分,而不必在Textbox或Rich TextBox中最好选择另一种颜色?实际上,我的意思是,文本的一部分用不同于为文本选择分配的颜色的另一种颜色突出显示。为了澄清,我附上了显示此行为的图像。 (图像来自网站,而不是WPF)。 粗体和深绿色部分是刚刚突出显示的文本,灰色区域是选中的部分。 enter image description here

2 个答案:

答案 0 :(得分:3)

使用RichTextBox元素可以提供更多的样式选项,据我所知,常规TextBox元素不可用。

这是我创建的一种方法:

// Generate example content
FlowDocument doc = new FlowDocument();

Run runStart = new Run("This is an example of ");
Run runHighlight = new Run("text highlighting in WPF");
Run runEnd = new Run(" using the RichTextBox element.");

// Apply highlight style
runHighlight.FontWeight = FontWeights.Bold;
runHighlight.Background = Brushes.LightGreen;

// Create paragraph
Paragraph paragraph = new Paragraph();
paragraph.Inlines.Add(runStart);
paragraph.Inlines.Add(runHighlight);
paragraph.Inlines.Add(runEnd);

// Add the paragraph to the FlowDocument
doc.Blocks.Add(paragraph);

// Apply to RichTextBox
YourRichTextBoxHere.Document = doc;

View Screenshot

答案 1 :(得分:1)

我发现这篇文章很有帮助。

Highlight Searched Text in WPF ListView

尽管本文的重点是在ListView中突出显示搜索到的文本,但我很容易在自己的代码中对其进行了改编,使其可以与几乎所有控件一起使用。

从您传入的控件开始,它将递归查找TextBlock,并找到所需的文本,将其提取为内联,并将其更改为Background / {{1} }属性。

如果需要,您可以轻松地将代码修改为一种行为。

这里是一个例子:

Foreground

我希望这会有所帮助!

相关问题