2014-02-12 175 views
1

在CSS中,我们可以使用::selection伪标签编辑文本选择的颜色。是否有可能仅为一个控件覆盖选择的默认背景颜色,例如,一个RichTextBox?我知道,没有办法通过类似CSS的方式来改变默认行为,但至少覆盖它可能是可能的。RichTextBox中选定文本的颜色

我已经搜索了大约一个小时,但我只找到语法高亮片段。我希望文本是例如黄色代替典型的Windows蓝色。

编辑

如在此琴:http://jsfiddle.net/W99Gt/

+1

你使用的是WPF还是WinForms? – wdosanjos

+0

我目前正在使用WinForms,因为将UI集成到我的项目中速度更快。但我认为,WPF – michaeln

回答

2

在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不提供所需的行为。

+0

这几乎与http://stackoverflow.com/a/13220947/2058898相同,但感谢给我相应的WPF示例 – michaeln

+0

我修复了代码。它应该是WinForms解决方案的'SelectionBackColor'。 – wdosanjos

+0

我认为在这种情况下'选择'这个词的意思完全不同。它就像您可以通过编辑此属性来操作的选定单词。我之前(和现在)尝试了这一个,它改变了所选文本的背景颜色。在我选择焦点后,先前选定文字的背景已经改变。 – michaeln

1

有一个属性RichTextBox.SelectionColor它应该做的工作。引用MSDN

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

+0

这个问题将会是一样的谢谢你的快速回答。这不会解决我的问题,因为它会设置我选定文本的前景色。这实际上是我使用语法高亮'editor.Select(start,end); editor.SelectionColor = color;'。 – michaeln