qulaitks Ответов: 1

Я получаю ошибку на событиях щелчка ячейки DGV


У меня есть ошибка('ссылка на объект не установлена на экземпляр объекта.) на события щелчка ячейки DGV. Мой DGV вычислил coloums, я знаю, что это причина этой ошибки, но я не знаю, как ее исправить. Поэтому я и пишу здесь. К вашему сведению, это приложение предназначено для моего личного использования и обучения.

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

Private Sub DGV_Trans_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DGV_Trans.CellClick

      If e.RowIndex >= 0 Then

               Dim row As DataGridViewRow
               row = Me.DGV_Trans.Rows(e.RowIndex)

           TransIDTextBox.Text = row.Cells(1).Value.ToString
               CheckBox1.Checked = row.Cells(2).Value
               SymbolTextBox.Text = row.Cells(3).Value.ToString
               QuantityTextBox.Text = row.Cells(4).Value.ToString
               PriceTextBox.Text = row.Cells(5).Value.ToString
               DTP1.Value = row.Cells(6).Value
               TxtFee.Text = row.Cells(7).Value.ToString
               TxtVat.Text = row.Cells(8).Value.ToString

       End If

   End Sub

0x01AA

В какой клетке проблема? И вы знаете, что также для ячеек индекс начинается с нуля и максимума. индекс будет "нет ячеек - 1"?

qulaitks

Вычисляемая ячейка-это ячейка(9), Когда я щелкаю DGV, строки от 1 до 8 значений должны отображаться в связанных текстовых блоках

0x01AA

А индекс-это не проблема? Я имею в виду, что если у вас есть 10 столбцов, то диапазон для их решения таков row.Cells(0) вплоть до row.Cells(9)

qulaitks

Ячейка(0) содержит идентификатор, который генерируется автоматически

F-ES Sitecore

Не Б. У 1 на основе индексов?

0x01AA

Понятия не имею, я не знаю VB. Но если это так, то ... e.RowIndex >= 0 это тоже будет проблемой?

Dave Kreskowiak

Нет VB.NET-да.

F-ES Sitecore

Я думал, что это было в случае с vb.net -тоже. Каждый день ты узнаешь что-то новое :)

Richard MacCutchan

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

qulaitks

Я попробовал это сделать, и мне не показали никакой ошибки кода. Ошибка , с которой я сталкиваюсь, заключается в том, что когда я щелкаю ячейку DGV, это что-то связано с нулевыми значениями.

Dave Kreskowiak

Это самая простая ошибка, которую можно найти с помощью отладчика. Установите точку останова в первой строке обработчика событий и начните проверять содержимое переменных. Выполните строку кода, затем снова проверьте переменные.

Если что-то является нулевым, вам придется выяснить, почему.

1 Ответов

Рейтинг:
1

Maciej Los

Пожалуйста, прочтите комментарии в блоке кода:

'try to get current row
Dim row As DataGridViewRow = Me.DGV_Trans.CurrentRow 
If row is Nothing Then Return 'or Exit Sub
'further instructions here
TransIDTextBox.Text = row.Cells(1).Value.ToString() 'second column
CheckBox1.Checked = row.Cells(2).Value '3. column
SymbolTextBox.Text = row.Cells(3).Value.ToString() '4. column
QuantityTextBox.Text = row.Cells(4).Value.ToString()
PriceTextBox.Text = row.Cells(5).Value.ToString()
DTP1.Value = row.Cells(6).Value
TxtFee.Text = row.Cells(7).Value.ToString()
TxtVat.Text = row.Cells(8).Value.ToString() '9. column


Как 0x01AA как уже говорилось, индекс столбца начинается с 0 (нуля)! Итак, исправьте вышеприведенный код соответствующим образом!
Для получения более подробной информации, пожалуйста, смотрите:
Практическое руководство.Свойство Столбцов (System.Окна.Формы) | Microsoft Docs[^]
Как вернуть значение из процедуры - Visual Basic | Microsoft Docs[^]