如何在DatagridView中基于所选单元格获取行集合

本文关键字:单元格 获取 集合 于所选 DatagridView | 更新日期: 2023-09-27 18:20:39

我在Windows窗体上有一个DatagridView控件。它的selectionMode属性设置为CellSelect
我想根据所选单元格对DatagridViewRow进行操作。DataGridView控件已绑定到DataSource。

如何根据所选单元格获取"行"集合?

如何在DatagridView中基于所选单元格获取行集合

作为Linq提供的答案与提供的语法不兼容。Datagridview不支持Enumerable,因此您必须使用:

        IEnumerable<DataGridViewRow> selectedRows = dgPOPLines.SelectedCells.Cast<DataGridViewCell>()
                                           .Select(cell => cell.OwningRow)
                                           .Distinct();

DataGridView.SelectedCells将为您提供所选单元格的列表。该集合中的每个DataGridViewCell实例都有一个OwningRow,这允许您构建自己的行集合。

例如:

using System.Linq;
IEnumerable<DataGridViewRow> selectedRows = dgv.SelectedCells
                                               .Select(cell => cell.OwningRow)
                                               .Distinct();
List<DataGridViewRow> rowCollection = new List<DataGridViewRow>();
foreach(DataGridViewCell cell in dataGridView.SelectedCells)
{
    rowCollection.Add(dataGridView.Rows[cell.RowIndex];
}