0

以下是我在按下 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
4

3 回答 3

2

备选方案 1:

也许 dgsearchitemlist.SelectionMode 未设置为RowHeaderSelectFullRowSelect手动选择一行的所有单元格不会选择该行。请检查并将属性设置为这些值中的任何一个。

备选方案 2:

如果您只需要最后选择的行,则可以使用dgsearchitemlist.CurrentRow代替 dgsearchitemlist.SelectedRows(0)。然后您不必检查是否已选择任何行。

希望这些替代方案中的任何一个都会点击!

于 2013-11-07T04:02:28.507 回答
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
        ...
于 2013-11-06T11:59:19.463 回答
0

您很可能引用了一个不存在的列索引,在这种情况下,它可能是以下代码之一:

  description = dgsearchitemlist.SelectedRows(0).Cells(2).Value.ToString
  uom = dgsearchitemlist.SelectedRows(0).Cells(3).Value.ToString

那是细胞(2)或细胞(3)。如果您只有两列并且您的索引为 2,这意味着您正在访问第 3 列,如果您有索引 3,则意味着您正在访问第 4 列。并且这些列中的任何一个都不存在,那么它将是索引超出范围.

于 2013-11-06T11:50:47.737 回答