RichTextBox 中所选文本的颜色

Posted

技术标签:

【中文标题】RichTextBox 中所选文本的颜色【英文标题】:Color of selected text in RichTextBox 【发布时间】:2014-03-11 08:43:48 【问题描述】:

在 CSS 中,我们可以使用 ::selection 伪标签来编辑文本选择的颜色。是否有可能只为一个控件覆盖选择的默认背景颜色,例如富文本框?我知道,没有办法通过 CSS 之类的东西来更改默认行为,但至少为这个控件覆盖它是可能的。

我已经用谷歌搜索了大约一个小时,但我只发现了语法高亮的 sn-ps。我希望文本是例如黄色,而不是典型的 Windows 蓝色。

编辑

就像这个小提琴:http://jsfiddle.net/W99Gt/

【问题讨论】:

您使用的是 WPF 还是 WinForms? 我目前正在使用 WinForms,因为它可以更快地将 UI 集成到我的项目中。但我认为,这个问题对于 WPF 来说是一样的 【参考方案1】:

在 WPF 中,您可以按如下方式完成此操作:

myRichTextBox.SelectionBrush = System.Windows.Media.Brushes.Yellow; // WPF
myRichTextBox.IsInactiveSelectionHighlightEnabled = true;

不幸的是,在 Windows 窗体中无法实现所需的行为(详情 here)。解决方法是通过ElementHost 在 Windows 窗体中使用 WPF RichTextBox。

参考资料:TextBoxBase.SelectionBrush Property (WPF)TextBoxBase.IsInactiveSelectionHighlightEnabled Property (WPF) 编辑: 删除了 WinForms 解决方案,因为 SelectionBackColor 没有提供所需的行为。

【讨论】:

这和***.com/a/13220947/2058898 差不多,不过还是谢谢你给了我相应的WPF例子 我修复了代码。对于 WinForms 解决方案,它应该是 SelectionBackColor 我认为 Selection 这个词在这种情况下意味着完全不同的东西。它类似于您可以通过编辑此属性来操作的选定单词。我之前(现在)尝试过这个,它改变了所选文本的背景颜色。在我散焦选择后,之前选择的文本的背景发生了变化。 所以即使 RichTextBox 失去焦点,您也希望选择文本背景颜色保持不变,对吧? 我现在明白你的意思了。上面的 WPF 代码将执行此操作。 WinForms 代码将需要更多工作......等等。【参考方案2】:

有一个属性RichTextBox.SelectionColor 应该可以完成这项工作。引用MSDN

表示要应用于当前文本的颜色的颜色 选择

【讨论】:

感谢您的快速答复。这不会解决我的问题,因为它设置了我选择的文本的前景色。这实际上是我用于语法高亮的相同 sn-p editor.Select(start, end); editor.SelectionColor = color;

以上是关于RichTextBox 中所选文本的颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何覆盖主题覆盖中所选颜色的材质ui以进行反应

怎样使用C#的RichTextBox控件

求救,C#富文本框显示异常!

如何读取表格视图中所选行的背景颜色?

更改 WinForms RichTextBox 中文本的颜色 [重复]

在 VB6 RichTextBox 中创建文本部分的格式颜色