2013-10-23 197 views
2

我第一次填充我的datagridview它突出顯示第一行,我有一個按鈕,單擊時顯示被單擊的索引的值,因此我知道哪個行被單擊。如果用戶執行另一個搜索,則清除datagridview的內容,然後用新數據重新填充它。同樣,第一行(索引(0))被突出顯示,但是這次,當用戶單擊按鈕時,即使網格的第一行被突出顯示,我收到一個錯誤,顯示data_grid.rows沒有任何內容。我已經嘗試將第一行設置爲.selected = true,但這不會改變任何內容。它只在第一次運作,然後再也不運作。這裏是我的代碼:vb.net datagridview不顯示選定的行

Public sub show_data() 

' Clear everything out of the data grid 
' ------------------------------------- 
    With data_grid 
    While data_grid.RowCount > 0 
     data_grid.Rows.Clear() 
    End While 
    While data_grid.ColumnCount > 0 
     data_grid.Columns.Clear() 
    End While 
    End With 

' add the empty rows to the data grid 
' ----------------------------------- 
    Dim rows As Integer = assessment_array.Count() 
    data_grid.Rows.Add(rows) 

' Add the data to the columns 
' --------------------------- 
    For r As Integer = 0 To rows - 1 
    data_grid.Item(0, r).Value = assessment_array(r)(0) 
    data_grid.Item(1, r).Value = assessment_array(r)(1) 
    data_grid.Item(2, r).Value = assessment_array(r)(2) 
    Next 

With data_grid 
    .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill 
    .RowHeadersVisible = False 
    .AllowUserToAddRows = False 
    .AllowUserToDeleteRows = False 
    .AllowUserToOrderColumns = True 
    .ReadOnly = True 
    .SelectionMode = DataGridViewSelectionMode.FullRowSelect 
    .MultiSelect = False 
    .AllowUserToResizeRows = False 
    .Rows(0).Selected = True ' highlight the first row 
End With 

End sub 

AddHandler myButton.Click, AddressOf check_for_highlighted_assessment 

Public Sub check_for_highlighted_assessment() 
    MessageBox.Show(data_grid.CurrentRow.Index.ToString) 
End Sub 

第一次,點擊按鈕時,我得到「0」,如果DataGrid新的數據重新填充,然後點擊按鈕時,下一次我得到一個錯誤。

感謝您的任何幫助。

+0

網格看起來沒有任何列。 「我得到一個錯誤?」。什麼是錯誤? – LarsTech

+0

這些列在「將數據添加到列」部分填充。錯誤是「對象引用未設置爲對象的實例」。當試圖顯示消息框時。我可以在我的錯誤列表中看到data_grid.CurentRow的值爲「無」。 – user2721815

+0

我發現,如果我添加.Rows(0).Cells(0).Selected = True,那麼它的工作原理沒有錯誤,但是這看起來像一個黑客。我喜歡它的工作,而不必參考單元格。 – user2721815

回答

3

除了在數據刷新後設置選定行之外,還應設置當前單元格,該單元格將自動設置CurrentRow屬性。因此,舉例來說:

.Rows(0).Selected 
.CurrentCell = .Rows(0).Cells(0) 
+0

好的,謝謝我將與此合作。 – user2721815

+0

您能否標記回答的問題? –

+0

我知道@roryap你喜歡投票ups,在這裏我給你xD –