Member 14070037 Ответов: 2

Поиск элемента в представлении datagrid и выделение соответствующей строки


Я создал представление таблицы данных, все записи будут отображаться в этом представлении Datagrid,
Мне нужно создать одну кнопку поиска и текстовое поле, если мы ищем одно слово в определенном столбце, то это слово должно быть выбрано полностью.

Я написал это ниже кода, но в этой завершенной строке не выбирается и для каждого поиска его повторяет старый поиск также, и завершенная строка не выбирается и конкретный цвет его не берет.



Пожалуйста, помогите мне с правильным кодом

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

Private Sub Btn_Search_Click(sender As Object, e As EventArgs) Handles Btn_Search.Click
       Dim someText As String = TextBox1.Text
       Dim gridRow As Integer = 0
       Dim gridColumn As Integer = 0
       For Each Row As DataGridViewRow In dgvQCReport.Rows
           For Each column As DataGridViewColumn In dgvQCReport.Columns
               Dim cell As DataGridViewCell = (dgvQCReport.Rows(gridRow).Cells(gridColumn))
               If cell.Value.ToString.ToLower.Contains(someText.ToLower) Then
                   cell.Style.BackColor = Color.Yellow
               End If
               gridColumn += 1
           Next column
           gridColumn = 0
           gridRow += 1
       Next Row



   End Sub

2 Ответов

Рейтинг:
1

Maciej Los

Цитата:
(...) для каждого поиска свой повторяющийся старый поиск (...)

Если вы хотите избежать этого, вам придется восстановить предыдущий формат ячеек по умолчанию.
Для получения более подробной информации, пожалуйста, смотрите: Стили ячеек в элементе управления Windows Forms DataGridView | Microsoft Docs[^]

Цитата:
(...) завершенная строка не выбирается и конкретный цвет ее не принимает.

Потому что ваш код этого не делает.
Я бы посоветовал вам прочитать это: Режимы выбора в элементе управления Windows Forms DataGridView | Microsoft Docs[^]


0x01AA

Мой 5. дополнительно я бы предложил использовать решение, основанное на событиях, см. Мой комментарий к этому вопросу.

Maciej Los

Я видел это.
Спасибо, Бруно.

Рейтинг:
1

0x01AA

Я бы предложил подумать о событийном подходе, примерно таком, как показано здесь, Ответ 1: Как изменить задний цвет ячейки DataGridView, если она содержит недопустимые данные[^].

Имейте в виду, для этого вам придется использовать dgvQCReport.Invalidate() в случае изменения "выделенного текста".


Maciej Los

Мне было интересно, когда вы осмелитесь опубликовать свое собственное решение. Я рад, что ты это сделал.
5ed!

0x01AA

Большое тебе спасибо, Мацей! Только сегодня я осознал, что в моем недавнем времени мне нужно что-то большее, чем еще 3 года, чтобы получить платину за "авторитет", поэтому я решил что-то сделать ;)

Maciej Los

:большой палец вверх: