以下是我在按F9键时选择特定行列值时使用的代码。但是我得到了错误,因为参数超出范围异常被处理。详细错误来自索引超出范围异常。
Private Sub dgsearchitemlist_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles dgsearchitemlist.KeyDown
If e.KeyCode = Keys.F9 Then
itemcode = dgsearchitemlist.SelectedRows(0).Cells(0).Value
description = dgsearchitemlist.SelectedRows(0).Cells(2).Value.ToString
uom = dgsearchitemlist.SelectedRows(0).Cells(3).Value.ToString
End If
End Sub
答案 0 :(得分:2)
也许dgsearchitemlist.SelectionMode未设置为 RowHeaderSelect 或 FullRowSelect 。 手动选择行的所有单元格不会选择该行。请检查并将属性设置为任何这些值。
如果您只需要最后选择的行,则可以使用 dgsearchitemlist.CurrentRow 而不是dgsearchitemlist.SelectedRows(0)。然后,您不必检查是否已选择任何行。
希望任何这些替代方案都会点击!
答案 1 :(得分:0)
很可能你引用了一个不存在的列索引,在这种情况下它可能是以下代码之一:
description = dgsearchitemlist.SelectedRows(0).Cells(2).Value.ToString
uom = dgsearchitemlist.SelectedRows(0).Cells(3).Value.ToString
即Cell(2)或Cell(3)。如果您只有两列并且索引为2表示您正在访问第3列,并且如果您有索引3则表示您正在访问第4列。并且这些列中的任何列都不存在那么它将是索引超出范围
答案 2 :(得分:0)
听起来好像在某些情况下,没有选择任何行。试试这个:
Private Sub dgsearchitemlist_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles dgsearchitemlist.KeyDown
If dgsearchitemlist.SelectedRows.Count = 0 Then Exit Sub
If e.KeyCode = Keys.F9 Then
itemcode = dgsearchitemlist.SelectedRows(0).Cells(0).Value
...