vb.net中datagridview中的索引超出范围异常
以下是我在按F9键选择特定行列值时使用的代码。但我在处理参数超出范围异常时收到错误。详细错误为索引超出范围异常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
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可能未设置为RowHeaderSelect或FullRowSelect。手动选择一行的所有单元格不会选择该行。请检查并将属性设置为这些值中的任何一个
备选案文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键事件中提取一个值。非常感谢你。代码现在运行良好很高兴知道!谢谢