Жирный в RichtextBox - PullRequest
       32

Жирный в RichtextBox

2 голосов
/ 16 февраля 2012

Я работал над своим 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.

Примерhttp://i40.tinypic.com/4lov91.png

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

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

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

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

Ответы [ 2 ]

9 голосов
/ 16 февраля 2012

Линия ...

int srt = bold.Find(name);

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

0 голосов
/ 15 июня 2013

Мой 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.

...