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-peditor.Select(start, end); editor.SelectionColor = color;
。以上是关于RichTextBox 中所选文本的颜色的主要内容,如果未能解决你的问题,请参考以下文章