blueye89 Ответов: 1

Фильтрация данных в richtextbox по некоторым строкам из datagridview


Всем привет,
Мне нужна помощь с фильтрацией данных в RichTextBox по некоторым строкам из DataGridView.
У меня есть отчет обо всех используемых в настоящее время сетевых лицензиях программного обеспечения, поэтому мне нужно проверить, являются ли все пользователи, использовавшие лицензию, моими коллегами или нет. Я создал базу данных msaccess машин моих коллег и теперь хочу отфильтровать отчет. Если пользователь в содержимом отчета уже находится в столбце DataGridView "машины", то покрасьте его в зеленый цвет, а все остальные цвета-в красный.
Все имена машин имеют строку " @ " в середине, поэтому я хотел бы использовать эту строку для фильтрации значения.

Например, наклеенные отчет:
https://s26.postimg.org/ilh92zwu1/report_content.png
Вот моя форма:
https://s26.postimg.org/673nu5k3d/form.png
Вот чего я ожидаю:
https://s26.postimg.org/5iutb7ldl/after_filetring.png

Любая помощь очень ценится.

Что я уже пробовал:

Private getnumber As String = "@"

Private Sub RichTextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles RichTextBox1.TextChanged

    For Each row As DataGridViewRow In DataGridView1.Rows
        Dim filteredText As String = row.Cells(2).Value

        For Each m As Match In Regex.Matches(RichTextBox1.Text, getnumber)
            'what?
        Next

    Next


End Sub

1 Ответов

Рейтинг:
12

Graeme_Grant

Вот пошаговое видео, которое покажет вам, как начать работу: VB.NET - как искать и выбирать текст в RichTextBox с помощью Visual Basic .Net [с исходным кодом] - YouTube[^]


blueye89

Я немного изменил код, и он работает нормально, но я хотел бы получить немного другой результат. Я хочу вернуть цвет всей текстовой строке, где фильтруется строка, а не только отфильтрованной строке.
Richtextbox1 отображение.SelectAll()
Richtextbox1 отображение.SelectionBackColor = Цвет.Красный

Для каждой строки как DataGridViewRow в DataGridView1. Rows

Dim filteredText As String = row.Ячейки (2). Значение
Dim startText As Integer = 0
Dim endText как целое число

endText = richtextbox1 отображение.Текст.LastIndexOf(filteredText)

Richtextbox1 отображение.SelectAll()



В то время как startText < endText

RichTextBox1. Find(filteredText, startText, RichTextBox1.TextLength, RichTextBoxFinds.MatchCase)
Richtextbox1 отображение.SelectionBackColor = Цвет.Зеленовато-желтый

startText = RichTextBox1. Text. IndexOf(filteredText, startText) + 1
Конец Пока
Следующий

Вот результат, который я получаю:
https://s26.postimg.org/7pux4ri7t/img02.png
Вот чего я ожидаю:
https://s26.postimg.org/5iutb7ldl/after_filetring.png