2013-03-15 52 views
1

在我的DataGridView中selectionChange中有这样的代码,所以当行改变时texbox也发生了变化。下面的代码工作,我点击行,它显示正确,也当我按上/下箭头。我的问题是,当我点击网格的Header somwhere时,我有这个nullreferenceexception错误Object reference not set to an instance of an object.。我不知道如何处理它,因为我知道它会返回什么。nullreferenceexception在GridView中点击标题时

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 

回答

1

无论何时获取RowIndex时都会引发null引用,其中没有选择ROW。
单击标题调用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 
+0

很有意思,我从来没有想过这样...现在解决问题.. – Ikong 2013-03-15 05:58:43

+0

这也是我的问题的一种方法背部。 – 2013-03-15 06:09:53