2013-06-14 5 views
2

Я написал приложение с богатым текстом в нем с черным фоном. Поэтому я должен писать в нем, используя белый текст. Все это прекрасно работает, устанавливая белый цвет переднего цвета. Если я, однако, скопирую текст из Word, который является черным в моем текстовом поле, этот текст остается черным.Изменить цвет текста существующего текста

Мне нужно изменить цвет этого текста. Так это то, что я пытался до сих пор: (текстовое поле называется txtMessage)

txtMessage.ForeColor = Color.White; 

Это не оказывает никакого влияния на существующий черный текст, хотя.

Тогда я попытался это:

private void txtMessage_TextChanged(object sender, EventArgs e) 
    { 
     int s = txtMessage.SelectionStart; 
     txtMessage.SelectAll(); 
     txtMessage.SelectionColor = Color.White; 
     txtMessage.Select(s, 0); 

    } 

Это в принципе работает нормально, но, конечно, каждый раз, когда я редактировать текст в текстовом поле (не копировать что-то там, а просто набрав) все это выполняется с каждое письмо, которое я печатаю, в результате мерцает (я думаю, потому что все выбрано, а затем отменено каждый раз).

У кого-нибудь есть предложение, как исправить это элегантно?

спасибо.

+0

Какую версию .NET вы настраиваете? Просто протестирован на VS2010-таргетинге. Клиентский профиль .NEt 4.0 и скопируйте/вставьте черный текст из Word, оставайтесь белым в элементе управления RichTextBox даже с указанным черным фоном и белым цветом. – Sevenate

+0

Самый новый, я думаю. Я использую VS2012, и мой ноутбук довольно новый. – tomet

ответ

2

Если вы печатаете на коробке, цвет имеет белый цвет, нет необходимости запускать код.

Вам нужно всего лишь запустить его, когда вы добавляете текст, который вы не ввели (например, скопируйте/вставьте из вашего примера).

Поэтому использовать этот код в случае TextChanged, но выполнить проверку перед запуском, был ли пользователь вводит текст или добавить его другим способом

EDIT: Проверьте ответ на этот вопрос: Detecting a paste into a RichTextBox, это может помочь вам

+0

Спасибо, у меня тоже была эта идея. Хотя я не знаю, как это сделать. – tomet

+1

Отметьте мои изменения .. – iabbott

+0

Спасибо. Это кажется очень разумным и легким. – tomet

Смежные вопросы