Форматирование указанных строк текста в WPF RichTextBox - PullRequest
2 голосов
/ 31 августа 2011

В WPF .NET 4.0 RichTextBox со следующим текстом:

яблоко

Сыр

Orange

груша

Куриная

Как бы я программно с C # (не с разметкой XAML) выделил жирным шрифтом все строки, которые начинаются с символа "C"?

В более общем смысле, как получить ссылку на заданную строку текста из RichTextBox, а затем применить к ней некоторое форматирование?

1 Ответ

2 голосов
/ 02 сентября 2011

Ну, это было сложнее, чем я ожидал, но я думаю, что код ниже делает это:

        foreach (var paragraph in richTextBox1.Document.Blocks)
        {
            var text = new TextRange(paragraph.ContentStart,
                           paragraph.ContentEnd).Text;

            paragraph.FontWeight = text.StartsWith("C") ?
                           FontWeights.Bold : FontWeights.Normal;
        }

По сути, RichTextBox хранит свое содержимое в FlowDocument (доступ к которому осуществляется через свойство Document), который в свою очередьколлекция блоков, содержащих каждый абзац.На самом деле, каждый элемент в коллекции Blocks может быть чем угодно, производным от абстрактного класса Block ... но я предполагаю, что если вы добавите простой текст в RichTextBox, то они всегда будут просто абзацами.См. здесь для лучшего объяснения!

Самая хитрая часть в том, что для получения текста из абзаца вам необходимо использовать класс TextRange ... ноХорошая новость заключается в том, что после того, как у нас есть текст, у него есть простые свойства для установки веса шрифта и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...