You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

代码触发‘Index was out of range’报错,求排查问题原因

问题排查与修复

这个错误是典型的索引越界,问题出在这行代码:

id = DataGridView1.SelectedRows(0).Cells("id").Value

可能的触发原因及解决办法:

  • 没有选中任何行:当DataGridView1里没有选中行时,SelectedRows集合的长度为0,访问索引0就会报错。
    修复:先判断是否有选中行,再执行后续逻辑:

    If DataGridView1.SelectedRows.Count = 0 Then
        MessageBox.Show("请先选择一行数据")
        Cursor = Cursors.Default
        Return
    End If
    
  • 不存在名为"id"的列:如果DataGridView1的列集合里没有Name属性为"id"的列(注意是列的Name,不是显示的HeaderText),用Cells("id")查找会返回无效索引,导致报错。
    修复:确认列的Name确实是"id",或者改用列的索引(比如Cells(0),根据实际列位置调整),同时可以加判断避免列不存在的情况:

    Dim idColumn As DataGridViewColumn = DataGridView1.Columns("id")
    If idColumn Is Nothing Then
        MessageBox.Show("找不到名为'id'的列")
        Cursor = Cursors.Default
        Return
    End If
    
  • 额外注意:Cells("id").Value可能为DBNull,直接转Integer会引发类型转换错误,建议加上空值判断:

    If DBNull.Value.Equals(DataGridView1.SelectedRows(0).Cells("id").Value) Then
        MessageBox.Show("所选行的id值为空")
        Cursor = Cursors.Default
        Return
    End If
    

完整修复后的代码

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Cursor = Cursors.AppStarting
    Dim id As Integer
    Dim fx As frmItemEntry

    ' 检查是否有选中行
    If DataGridView1.SelectedRows.Count = 0 Then
        MessageBox.Show("请先选择一行数据")
        Cursor = Cursors.Default
        Return
    End If

    ' 检查id列是否存在
    Dim idColumn As DataGridViewColumn = DataGridView1.Columns("id")
    If idColumn Is Nothing Then
        MessageBox.Show("找不到名为'id'的列")
        Cursor = Cursors.Default
        Return
    End If

    ' 检查id值是否为空
    Dim idValue As Object = DataGridView1.SelectedRows(0).Cells("id").Value
    If DBNull.Value.Equals(idValue) Then
        MessageBox.Show("所选行的id值为空")
        Cursor = Cursors.Default
        Return
    End If

    ' 转换为Integer并执行后续逻辑
    id = CInt(idValue)
    fx = New frmItemEntry(id)
    Button4.PerformClick()
    fx.ShowDialog()
    Cursor = Cursors.Default
End Sub

内容的提问来源于stack exchange,提问作者Suenan Akbar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:41:26