простой цвет текста в поле форматированного текста

Я могу найти миллион примеров выполнения reg ex для применения подсветки синтаксиса к текстовому полю с форматированным текстом. но то, что мне нужно, это просто простой способ добавить слово другого цвета.

Каким был бы код, чтобы просто вставить слова «Hello World» в текстовое поле и сделать так, чтобы Hello было красным, а World - зеленым?

Этот код не работает.

this.richTextBox1.SelectionColor = Color.Red
this.richTextBox1.text += "Test"

person The Digital Ninja    schedule 05.11.2009    source источник
comment
Он помечен как vb.net, и нет никаких точек с запятой ...   -  person Meta-Knight    schedule 06.11.2009
comment
... но тогда код использует это вместо меня ... сбивает с толку!   -  person Meta-Knight    schedule 06.11.2009
comment
Плюс text должно быть Text. Тем не менее, все другие вопросы OP .Net относятся к VB, поэтому я предполагаю, что этот тоже.   -  person SLaks    schedule 06.11.2009
comment
это код vb.net. Я просто использовал приведенный выше код в качестве примера, он больше похож на childform.rtbMainText.Text, но я просто попытался сделать его проще. думаю, я потерпел неудачу в этом лол   -  person The Digital Ninja    schedule 06.11.2009


Ответы (6)


Выделите текст после того, как вы его вставили, а затем измените цвет.

Например:

richTextBox1.Text += "Test"
richTextBox1.Select(richTextBox1.TextLength - 4, 4)
richTextBox1.SelectionColor = Color.Red
person SLaks    schedule 05.11.2009
comment
Это неправильный способ добавлять текст к любому элементу управления Form. Каждый раз, когда вы сбрасываете весь текст внутри элемента управления, что может быть очень медленным, когда содержимое становится все больше и больше. Плохое кодирование. - person Roni Tovi; 03.03.2015

Этот код добавляет текст «Hello» красного цвета и текст «World» зеленым в RichTextBox.

RichTextBox1.SelectionColor = Color.Red
RichTextBox1.SelectedText = "Hello "
RichTextBox1.SelectionColor = Color.Green
RichTextBox1.SelectedText = "World"
person Meta-Knight    schedule 05.11.2009
comment
Ваш ответ намного проще, чем любой из ответов, и он работает для меня! Спасибо, Мета-Рыцарь. - person Curt; 06.03.2012

Я работал с ним в VB6, и я думаю, что это то же самое: вы должны выбрать текст, а затем применить

this.richTextBox1.SelectionColor = Color.Red

Добавленный текст всегда отображается в цвете по умолчанию, вы должны выбрать его, а затем изменить его цвет:

this.richTextBox1.text="Hello world!"
this.richTextBox1.selstart=0
this.richTextBox1.sellength=5
this.richTextBox1.SelectionColor = Color.Red

Поскольку я не использую vb.net, вы должны проверить орфографию, но я думаю, что это ключ. Написанный мной код должен печатать «Hello» красным цветом и «World!». В черном.

person ChaosCoder    schedule 05.11.2009

Попробуй это

    RichTextBox2.SelectionLength = 0
    RichTextBox1.SelectionStart = 0
    ' We deselect everything first in case the user has something selected.
    RichTextBox1.SelectionColor = Color.Red
    RichTextBox1.SelectedText = "Hello "
    RichTextBox1.SelectionColor = Color.Green
    RichTextBox1.SelectedText = "World "

Это добавит его в начало текстового поля. Я думаю, вы также можете сделать SelectionStart = RichTextBox1.TextLength, который поместит его в конец, а не в начало.

person L1amm    schedule 19.09.2014

Код не работает:

this.richTextBox1.SelectionColor = Color.Red
this.richTextBox1.text += "Test"

Измените вторую строку на это:

this.richTextBox1.SelectionColor = Color.Red
this.richTextBox1.selectedtext = "Test"
person Ronan    schedule 07.08.2013

Попробуй это

Sub colorWord(ByVal word As String, ByVal color As Color) ' by im4dbr0
        For i As Integer = 0 To RichTextBox1.TextLength
            Try
                If RichTextBox1.Text.ElementAt(i).ToString = word.ElementAt(0).ToString Then
                    Dim found As Boolean = False
                    For j As Integer = 1 To word.Count - 1
                        If RichTextBox1.Text.ElementAt(i + j) = word.ElementAt(j) Then
                            found = True
                        Else
                            found = False
                            Exit For
                        End If
                    Next
                    If found = True Then
                        RichTextBox1.Select(i, word.Length)
                        RichTextBox1.SelectionColor = color
                    End If
                End If
            Catch ex As Exception
                Continue For
            End Try
        Next

Для нескольких слов используйте цикл

 Dim Words As New List(Of String)
        Words.Add("Its")
        Words.Add("That")
        Words.Add("Simple")
        For i As Integer = 0 To Words.Count - 1
            colorWord(Words.Item(i), Color.Red)
        Next
person Austin Thompson    schedule 29.08.2014