2013-03-15 48 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