1

私の DataGridView selectionChange にはこのコードがあるため、行が変更されると texbox も変更されます。以下のコードは機能します。行をクリックすると、上/下矢印を押しても右に表示されます。私の問題はHeader、グリッドのどこかをクリックすると、この nullreferenceexception エラーが発生することObject reference not set to an instance of an object.です。私はそれが何を返すかを知っているので、それを処理する方法がわかりません。

Private Sub DataGridView1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.SelectionChanged
    Dim index As Integer
    index = DataGridView1.CurrentCell.RowIndex '<<<<--problem here when I click the header
    If (index <= maxrows - 1) Or (index <> Nothing) Then
        TextBox2.Text = DataGridView1.Item(1, index).Value()
        TextBox3.Text = DataGridView1.Item(2, index).Value()
        TextBox4.Text = DataGridView1.Item(3, index).Value()
    End If
End Sub
4

1 に答える 1

1

ROW が選択されていない RowIndex を取得するたびに、null 参照が発生します。
ヘッダーをクリックすると SORT が呼び出され、選択がクリアされます。
これは、nullreference 例外を取り除くのに役立ちます

    If DatagridView1.SelectedRows.Count = 0 Then
        Msgbox "Nothing Selected"
        Exit Sub 'Trapping
    End If

コード:

Private Sub DataGridView1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.SelectionChanged
    If DatagridView1.SelectedRows.Count = 0 Then
        Msgbox "Nothing Selected"
        Exit Sub 'Trapping
    End If

    Dim index As Integer
    With DataGridView
        index = .CurrentRow.RowIndex
        If (index <= maxrows - 1) Then
            TextBox2.Text = .Item(1, index).Value()
            TextBox3.Text = .Item(2, index).Value()
            TextBox4.Text = .Item(3, index).Value()
        End If
    End With
End Sub
于 2013-03-15T05:42:48.547 に答える