Как изменить цвет текста с определенного символа до конца строки - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть приложение WinForm, которое читает текстовый файл. Он читает весь файл построчно и генерирует RadioButton, когда в начале строки есть разделитель.
Так, "|A Topic" производит RadioButton, называемый A Topic.

Во время выполнения пользователь выбирает RadioButton, приложение находит эту строку в текстовом файле, затем читает весь текст до следующего разделителя и помещает его в RichTextBox.

Содержимое текстового файла является фактическим кодом Visual Basic, и я ищу способ выделить комментарии из кода. Я пытаюсь использовать .Find(), чтобы найти все апострофы, обозначающие комментарий.

С найденным комментарием, как я могу расширить выделение до конца этой строки?

Dim index As Integer = 0

While index < RichTxtOut.Text.LastIndexOf("'")
    RichTxtOut.Find("'", index, RichTxtOut.TextLength, RichTextBoxFinds.None)
    RichTxtOut.SelectionColor = Color.Green

    index = RichTxtOut.Text.IndexOf("'", index) + 1
End While

Это делает апостроф зеленым, но как мне сделать остальную часть этой строки зеленой.

Вот код обновления _________________________________________________

Dim indexx As Integer = 0
Dim lines() As String = System.IO.File.ReadAllLines(FILE_NAME)
Dim numOfChars As Integer

While indexx < RichTxtOut.Text.LastIndexOf("'")
    numOfChars = 0

    RichTxtOut.Find("'", indexx, RichTxtOut.TextLength, RichTextBoxFinds.None)

    'count the number of characters after the apostrophe
    For li As Integer = 0 To Lines(RichTxtOut.GetLineFromCharIndex(RichTxtOut.Find("'", indexx, RichTxtOut.TextLength, RichTextBoxFinds.None))).Count - 1
        numOfChars += 1
    Next

    RichTxtOut.Select(RichTxtOut.Find("'", indexx, RichTxtOut.TextLength, RichTextBoxFinds.None), numOfChars)

    RichTxtOut.SelectionColor = Color.Green
    numOfChars = 0
    indexx = RichTxtOut.Text.IndexOf("'", indexx) + 1
End While

Однако, он все еще не работает правильно. Он не находит правильное количество символов в строке после апострофа.

Есть предложения ??

1 Ответ

0 голосов
/ 02 ноября 2018

RichTextBoxes могут быть сложными, так как они достаточно мощные и имеют множество способов сделать что-либо.

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

Использование выделения - это немного хакерство. В WPF RTB используются объекты Paragraph и InLine, аналогичные DIV и SPAN в HTML. Вы можете установить шрифт для каждого Inline. Я не уверен, что та же самая винформная форма одинакова.

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