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

点击DataGridView数据项后程序无响应并抛出ArgumentOutOfRangeException异常

问题原因

这个System.ArgumentOutOfRangeException报错是因为你直接访问了SelectedRows集合的索引0,当该集合为空时就会触发索引越界:

Index was out of range. Must be non-negative and less than the size of the collection.

你代码的触发场景是点击DataGridView条目时SelectedRows没有匹配到选中的整行,常见的触发原因有3种:

  • DataGridView的SelectionMode属性未设置为FullRowSelect,点击操作只选中了单元格,没有选中整行,SelectedRows集合为空
  • 点击位置是表头、空白区域、或者允许用户添加行时的新行占位符,这些位置不会被计入SelectedRows
  • 点击事件触发前有代码刷新了DataGridView数据源、清空了选中状态,导致选中的行丢失
解决方案

第一步:修改代码增加空判断

先判断选中行的数量,再执行取值逻辑,避免直接访问不存在的索引:

if (VartotojuDGV.SelectedRows.Count > 0)
{
    var selectedRow = VartotojuDGV.SelectedRows[0];
    // 额外增加单元格非空判断,避免二次报错
    if (selectedRow.Cells.Count > 0 && selectedRow.Cells[0].Value != null)
    {
        VartotojoID.Text = selectedRow.Cells[0].Value.ToString();
    }
}

第二步:调整控件属性避免空选中

  • 将DataGridView的SelectionMode属性设置为FullRowSelect,确保点击任意单元格都会选中整行,SelectedRows会正常返回选中的行
  • 如果不需要用户手动添加行,将AllowUserToAddRows属性设置为false,避免点击占位行触发空选中问题
  • 若绑定数据源后会刷新控件,可在绑定完成后手动设置默认选中第一行,避免首次加载时触发空索引问题

内容的提问来源于stack exchange,提问作者Deividas Kek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:45:03