单击DataGridView标头时出现IndexOutOfRangeException错误

时间:2016-01-26 13:38:01

标签: vb.net

我试图获取DataGridView rowIndex并将其设置为文本框,所有这些代码都很好

Private Sub dgv_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellContentClick
    isitxt(e.RowIndex)
    btnInsert.Enabled = False
    btnUpdate.Enabled = True
    btnDelete.Enabled = True
End Sub

Sub isitxt(ByVal x As Integer)
    txtIDBarang.Text = dgv.Rows(x).Cells(0).Value
    txtNamaBarang.Text = dgv.Rows(x).Cells(1).Value
    cbJenisBarang.Text = dgv.Rows(x).Cells(2).Value
    numHargaBeli.Value = dgv.Rows(x).Cells(3).Value
    numHargaJual.Value = dgv.Rows(x).Cells(4).Value
End Sub

但是当我点击列标题时,我得到了IndexOutOfRangeException。我怎么处理它?

1 个答案:

答案 0 :(得分:1)

请注意,如果您使用CellContentClick,则仅当用户实际针对单元格的文本内容时才会执行代码。通常,CellClick更有意义。

至于你的代码,当你收到错误时,你可以调试并查看" x"中的内容 - 我想" -1" ...你然后可以处理它。但是,原因不应该在上面的代码中。

您也可以设置SelectionMode = FullRowSelect并按照以下方式执行操作:

Private Sub dgv_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellClick
  isitxt(Me.dgv.selectedRows(0).index)
  btnInsert.Enabled = False
  btnUpdate.Enabled = True
  btnDelete.Enabled = True
End Sub

除非您想单独处理单元格,否则用户通常更喜欢FullRowSelect模式。