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

如何在未选中行且不使用FullSelectedRow模式时获取DataGridView首个单元格值?

解决DataGridView非FullRowSelect模式下获取第一个单元格值的问题

这个问题我之前也碰到过!你遇到的System.ArgumentOutOfRangeException其实很好理解——当DataGridView没开FullRowSelect模式时,用户选中的是单个/多个单元格,而非整行,所以SelectedRows集合根本是空的,直接访问SelectedRows[0]当然会索引越界啦。

下面给你两种可行的解决方案,按需选择:

方案1:直接获取第一个选中的单元格值

既然选中的是单元格,那就直接用SelectedCells集合来访问,记得先做空判断避免报错:

// 先检查是否有选中的单元格
if (AppointmentGrid.SelectedCells.Count > 0)
{
    // 获取第一个选中单元格的值,处理null情况
    string cellText = AppointmentGrid.SelectedCells[0].Value?.ToString() ?? "该单元格为空";
    MessageBox.Show(cellText);
}
else
{
    MessageBox.Show("请先选中一个单元格哦");
}

方案2:获取选中单元格所在行的第一列值

如果你实际需求是拿到选中单元格所在行的第一列数据(而不是选中的那个单元格),可以这样写:

if (AppointmentGrid.SelectedCells.Count > 0)
{
    // 获取选中单元格所属的行
    DataGridViewRow selectedRow = AppointmentGrid.SelectedCells[0].OwningRow;
    // 获取该行第一列的单元格值
    string firstCellText = selectedRow.Cells[0].Value?.ToString() ?? "该单元格为空";
    MessageBox.Show(firstCellText);
}
else
{
    MessageBox.Show("请先选中一个单元格哦");
}

小提醒

不管用哪种方案,一定要先判断集合的Count是否大于0,这能帮你避开大部分索引越界和空引用的坑!

内容的提问来源于stack exchange,提问作者Dim Chris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:36:42