获得了由数据库填充的DGV。当显示DGV的表单时,我想在第一行上找到一个单元格的值,而当用户选择另一行时,我想找到一个选定的行单元格的值。
我使用过RowEnter事件,但是当窗体打开并给我一个错误时,它似乎被调用。如果我尝试在RowIndex> 0时收集单元格数据,那么它可以工作,但是我无法从第一行选择一个值。
Private Sub dgvOrders_RowEnter(sender As Object, e As DataGridViewCellEventArgs) Handles dgvOrders.RowEnter
If e.RowIndex >= 0 Then
txtOrderNumber.Text = dgvOrders.Rows(e.RowIndex).Cells(1).Value.ToString
End If
end sub
我可以在文档中看到DGV最初加载时调用了该事件。
我为此使用了正确的事件吗? 我的代码有问题吗? 做我想做的最好的方法是什么?!
非常感谢所有帮助。这就是我所做的。我不需要将DGV的selectionMode设置为默认值。我确实需要知道用户何时更改了他正在查看的行,因此需要将代码放入DGV的“ SelectionChanged”事件中。
最后,我放弃了并通过检查dgvOrders.currentrow.cells(1).value返回的值是否为空,然后调用一个子程序,该子程序使用从当前行。
Private Sub dgvOrders_SelectionChanged(sender As Object, e As EventArgs) Handles dgvOrders.SelectionChanged
Try
If Not dgvOrders.CurrentRow.Cells(1).Value Is Nothing Then
populateFields()
End If
Catch ex As Exception
'catch code here
End Try
End sub
我不确定是否应该将任何回答标记为答案,但是所有人都帮助我达到了这一点。如果有更好的方法,请告诉我。
答案 0 :(得分:0)
如果要单击行标题,请尝试
Private Sub DataGridView1_RowHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.RowHeaderMouseClick
MessageBox.Show(DataGridView1.Rows(e.RowIndex).Cells(0).Value.ToString)
End Sub
答案 1 :(得分:0)
您也可以尝试以下方法:
Private Sub dgvOrders_RowEnter(sender As Object, e As DataGridViewCellEventArgs) Handles dgvOrders.RowEnter
If e.RowIndex >= 0 Then
txtOrderNumber.Text = dgvOrders.SelectedRows(0).Cells(1).Value
End If
End sub
并确保 dgvOrders.SelectionMode = FullRowSelect