Жирный в RichtextBox

c# winforms fonts richtextbox

8820 просмотра

2 ответа

1065 Репутация автора

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

используя этот код:

        RichTextBox bold = richTextBox1;
        foreach (string line in bold.Lines)
        {
            string name = line.Split(' ')[0];
            int srt = bold.Find(name);
            bold.Select(srt, name.Length);
            bold.SelectionFont = new Font(bold.Font, FontStyle.Bold);
        } 

Но по некоторым причинам некоторые строки пропускаются. Из того, что я заметил, зависит от того, с какого слова начинается строка

например, Name: пропускается, но Name1: хорошо, то же самое происходит с ProcessId, VirtualSize и WorkingSetSize.

пример

Если вам нужно больше объяснений, пожалуйста, скажите мне.

Строки добавляются как

richTextBox1.Text += "Name: "+ queryObj["Name"] + Environment.NewLine;

функция, которая делает все первые слова полужирными, вызывается после того, как весь контент добавлен в richtextbox.

Автор: Skami Источник Размещён: 16.02.2012 03:43

Ответы (2)


10 плюса

1534 Репутация автора

Решение

Линия...

int srt = bold.Find(name);

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

Автор: Keith Miller Размещён: 16.02.2012 03:51

0 плюса

142 Репутация автора

Мой richtextbox не выбирал все вхождения, если они не были отправлены моей функции поиска в правильном порядке; поэтому мое исправление включает проверку того, что start (srt) больше 0, прежде чем начинать выделение текста. Это выглядит примерно так:

foreach (string line in bold.Lines)
{
    int srt = bold.Find(name);
    if (srt > 0)
    {
        bold.Select(srt, name.Length);
        bold.SelectionFont = new System.Drawing.Font(bold.Font, FontStyle.Bold);
    }
}

И теперь он всегда будет выбирать первое вхождение.

PS: nameэто stringи boldесть RichTextBox.

Автор: michaeljiz Размещён: 15.06.2013 01:07
Вопросы из категории :
32x32