Выделите (выберите) текст в RichTextBox, не затрагивая текущий .SelectionBackColor или .SelectionColor - PullRequest
0 голосов
/ 08 июля 2019

Я хочу иметь возможность выделять (выбирать) текст в RichTextBox, не затрагивая текущий .SelectionBackColor или .SelectionColor

У меня есть RichTextBox, содержащий много текста.

У меня естьListView, содержащий список строк / слов, которые имеют разные .BackColor и .ForeColor в ListView.

Я перебираю элементы ListView и выделяю соответствующий текст в RichTextBox, используя .SelectionBackColor и .SelectionColor, устанавливая цвет текстадля соответствия .BackColor и .ForeColor из ListView.

For Each verItem As ListViewItem In lvVer.Items
    startindex = 0

    While startindex < rtbMain.TextLength
        Dim wordStartIndex As Integer = rtbMain.Find(verItem.Text, startindex, RichTextBoxFinds.None)

        If wordStartIndex <> -1 Then
            rtbMain.SelectionStart = wordStartIndex
            rtbMain.SelectionLength = verItem.Text.Length
            rtbMain.SelectionBackColor = verItem.BackColor
            rtbMain.SelectionColor = verItem.ForeColor
        Else
            Exit While
        End If

        startindex += wordStartIndex + verItem.Text.Length

    End While
Next

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

Если я использую мышь для выделения текста в RichTextBox, он временно подсвечивается обычным способом окон (синий фон,белый текст).Если я затем щелкну мышью где-нибудь еще в RichTextBox, исходный цвет, который я установил для строки, все еще там.Я хочу повторить это поведение в коде.

Если «выделить» текст с помощью кода rtbMain.Select(wordStartIndex, verItem.Text.Length), он не будет выделен.Это даже не кажется выбранным визуально либо.Очевидно, что я могу установить новые .SelectionBackColor и .SelectionColor, но тогда я потеряю свои исходные цвета.

Есть ли способ прокрутить мышь над текстом RichTextBox программно и выделять и выделять текст, не затрагивая основнойоригинальные цвета?

1 Ответ

0 голосов
/ 09 июля 2019

Я нашел ответ, который хотя и был очень прост, но не был очевиден.

Мне пришлось установить для свойства RichTextBox HideSelection значение False. Я знаю, что это очевидно, когда вы знаете, что свойство существует, однако, даже если для него установлено значение false, когда я дважды щелкаю слово или прокручиваю указатель мыши над ним, выделение становится видимым ??!? Это просто не было видно, когда я делал это в коде.

...