Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net中datagridview中的索引超出范围异常_Vb.net_Winforms_Datagridview - Fatal编程技术网

vb.net中datagridview中的索引超出范围异常

vb.net中datagridview中的索引超出范围异常,vb.net,winforms,datagridview,Vb.net,Winforms,Datagridview,以下是我在按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

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

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

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

即单元格(2)或单元格(3)。如果只有两列,且索引为2,则表示正在访问第3列;如果索引为3,则表示正在访问第4列。如果这些列中的任何一列都不存在,那么它的索引将超出范围。

听起来可能在某些情况下,没有选择行。试试这个:

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
        ...
备选案文1: dgsearchitemlist.SelectionMode可能未设置为RowHeaderSelectFullRowSelect。手动选择一行的所有单元格不会选择该行。请检查并将属性设置为这些值中的任何一个

备选案文2: 如果只需要最后选定的行,则可以使用dgsearchitemlist.CurrentRow而不是dgsearchitemlist.SelectedRows(0)。然后,您不必检查是否选择了任何行


希望这些选择中的任何一个都能点击

gridview中有多少列以及错误出现在哪一行?如果没有SelectedRows,或者列数少于所引用的列,则会发生这种情况错误出现在第一行本身..itemcode=dgsearchitemlist.SelectedRows(0).Cells(0).Value如果只有3列,则单元格(3)超出范围(0,1,2)=3尝试注释掉单元格(0)行,看看会发生什么。还是第一个位置有行?上面的行没有给出单元格(0)本身显示的错误。我也注释掉了这些行。description=dgsearchitemlist.SelectedRows(0)。cells(2)。Value.ToString uom=dgsearchitemlist.SelectedRows(0)。cells(3)价值ToString@vimalvasudevan可能是因为首先没有行可供选择吗?错误来自
SelectedRows(0)
?但为什么即使在我选择行时也没有选择行?您是使用多线程还是后台正在运行线程?现在,当我处于调试模式时..如果dgsearchitemlist.SelectedRows.Count=0,则即使我选择行,Exit Sub语句始终为真。。。事件句柄是否有问题?在此代码运行之前,是否有其他代码正在取消选择行?请在selectionchanged事件中设置do nothing中断以确保。有东西正在清除您的选择,这解释了原始错误(不一定是您的代码,可能是DGV方法)。如何设置不执行中断。
控制台。writeline(“DGV行选择已更改”)
-不是messagebox!在该行上有一个中断,您可以查看堆栈以查看取消选择的内容,在没有中断的情况下,您可以查看它是否发生在输出窗口中
Dim i AS integer=0
是另一个例子谢谢你。你的解决方案正是医生要求的。是的,我只是在搜索它。我只需要在F9键事件中提取一个值。非常感谢你。代码现在运行良好很高兴知道!谢谢