Цвет выделенного текста в RichTextBox

В CSS мы можем редактировать цвета выделения текста, используя псевдотег ::selection. Возможно ли перезаписать цвет фона по умолчанию для выбора только для одного элемента управления, например. RichTextBox? Я знаю, что нет способа изменить поведение по умолчанию чем-то вроде CSS, но, по крайней мере, перезаписать его для этого элемента управления можно.

Я уже гуглил около часа, но нашел только фрагменты подсветки синтаксиса. Я хочу, чтобы текст был, например. желтый вместо типичного для Windows синего.

ИЗМЕНИТЬ

Как в этой скрипте: http://jsfiddle.net/W99Gt/


person michaeln    schedule 12.02.2014    source источник
comment
Вы используете WPF или WinForms?   -  person Wagner DosAnjos    schedule 12.02.2014
comment
В настоящее время я использую WinForms, потому что интегрировать пользовательский интерфейс в мой проект было быстрее. Но я думаю, эта проблема будет такой же для WPF   -  person michaeln    schedule 13.02.2014


Ответы (2)


В WPF это можно сделать следующим образом:

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

К сожалению, желаемое поведение невозможно в Windows Forms (подробности здесь). Обходным путем может быть использование RichTextBox WPF в форме Windows через ElementHost.

Ссылки:
Свойство TextBoxBase.SelectionBrush (WPF)
Свойство TextBoxBase.IsInactiveSelectionHighlightEnabled (WPF)


< strong>EDIT:
Удалено решение WinForms, поскольку SelectionBackColor не обеспечивает желаемого поведения.

person Wagner DosAnjos    schedule 12.02.2014
comment
Это почти то же самое, что и stackoverflow.com/a/13220947/2058898 , но все равно спасибо за соответствующий пример WPF. - person michaeln; 12.02.2014
comment
Я исправил код. Предполагалось, что это будет SelectionBackColor для решения WinForms. - person Wagner DosAnjos; 13.02.2014
comment
Думаю, слово Selection в данном случае означает совсем другое. Это что-то вроде выбранных слов, которыми вы можете манипулировать, редактируя этот атрибут. Я пробовал это раньше (и прямо сейчас), и он изменил цвет фона выделенного текста. После того, как я расфокусировал выделение, изменился фон ранее выделенного текста. - person michaeln; 13.02.2014
comment
Итак, вы хотите, чтобы цвет фона выделенного текста оставался прежним, даже если RichTextBox теряет фокус, верно? - person Wagner DosAnjos; 13.02.2014
comment
Вы знаете, что ::selection делает в CSS? Я хочу добиться этого эффекта. Я создам jsfiddle и отредактирую его на свой вопрос - person michaeln; 13.02.2014
comment
Пожалуйста, попробуйте с HideSelection = false. Это сохранит выбранный текстовый фон видимым, даже когда элемент управления потеряет фокус. - person Wagner DosAnjos; 13.02.2014
comment
Я не думаю, что мы говорим об одной и той же проблеме. Мое намерение состоит в том, чтобы отредактировать цвет фона текущего выделения. Если я отменю выбор (расфокусирую выделение), фон должен остаться таким, каким он был раньше. Единственное, что я хочу изменить, это цвет фона выделения, как в jsfiddle, который я разместил в своем вопросе. - person michaeln; 13.02.2014
comment
Теперь я понимаю, что вы имеете в виду. Приведенный выше код WPF сделает это. Код WinForms потребует дополнительной работы... подождите. - person Wagner DosAnjos; 13.02.2014
comment
Хм... Кажется, это невозможно сделать с помощью WinForms -color?forum=winforms" rel="nofollow noreferrer">social.msdn.microsoft.com/Forums/windows/en-US/ - person Wagner DosAnjos; 13.02.2014
comment
Похоже, что единственным обходным решением будет использование WPF RichTextBox в вашей форме Windows через ElementHost. - person Wagner DosAnjos; 13.02.2014
comment
Тогда я думаю, что мне, возможно, придется переключиться на WPF. Спасибо, что помогли мне, хотя это было невозможно. Если вы отредактируете свой ответ, чтобы он содержал это, я отмечу его как ответ, чтобы другие пользователи могли это увидеть. - person michaeln; 13.02.2014
comment
Применены правки. Спасибо. - person Wagner DosAnjos; 13.02.2014