#vb.net #datagridview
#vb.net #datagridview
Вопрос:
Я продолжаю получать эту ошибку:
Дополнительная информация: Оператор ‘=’ не определен для типа ‘DBNull’ и строки
Я попытался добавить проверку IsDBNull в код и не могу заставить ее работать. Вот мой код без моего понимания добавления IsDBNull:
If EquationVariable = "=" Then
For Each R0w In Sorter.DataGridView1.Rows
Dim ColumnName As String = ListBox1.SelectedItem
Sorter.DataGridView1.CurrentCell = Sorter.DataGridView1.Item(ColumnName, R0w.index)
If Sorter.DataGridView1.CurrentCell.Value = SearchVariable Then
Sorter.DataGridView1.CurrentRow.DefaultCellStyle.ForeColor = Color.Red
Else
End If
Next
Else
MsgBox(ListBox1.SelectedItem.ToString amp; " Doest not = " amp; SearchVariable)
End If
Именно в этой строке я получаю ошибку:
If PostalSorter.DataGridView1.CurrentCell.Value = SearchVariable Then
Вот как я пытался это исправить:
If IsDBNull(PostalSorter.DataGridView1.CurrentCell.Value) Then
Else
If PostalSorter.DataGridView1.CurrentCell.Value = SearchVariable Then
PostalSorter.DataGridView1.CurrentRow.DefaultCellStyle.ForeColor = Color.Red
Else
End If
End If
Комментарии:
1. если текущее значение ячейки равно DBNull, вы не можете сравнить его с чем-либо. Покажите, как вы пытались это исправить
Ответ №1:
Вы можете попробовать следующее:
If Not IsDBNull(Sorter.DataGridView1.CurrentCell.Value) AndAlso Sorter.DataGridView1.CurrentCell.Value = SearchVariable Then
Sorter.DataGridView1.CurrentRow.DefaultCellStyle.ForeColor = Color.Red
AndAlso
Оператор удобен в этом случае, потому что, в отличие от обычного And
, если он сталкивается с условием, которое оценивается как false
, он не читает дальше. Выполняя наше первое условие Not isDBNull
и используя AndAlso
, мы гарантируем, что сравнение, вызывающее проблему, происходит только в том случае, если на самом деле CurrentCell.Value
не DBNull .