(C#) DataGridView:如何获取包含单元格和行的选定计数?

(C#) DataGridView: How to get Selected Count with cells AND rows?

所以我有这个DataGridView

还有这段代码:

if(dataGridView1.SelectedRows.Count > 1)
        {
            MessageBox.Show("Error: More than one value selected");
            return false;
        }

如果我有 2 个完全选择的行,它正确地计数为 2。 但我想检查是否选择了来自 2 个不同行或更多行的 任何单元格

换句话说: 在我的照片中 我目前选择的是 returning 1,但我希望它是 return 2.

谢谢。

修复后编辑:工作代码:

if(dataGridView1.SelectedCells.Cast<DataGridViewCell>().Select(c => c.RowIndex).Distinct().Count() > 1)
        {
            MessageBox.Show("Error: More than one value selected");
            return false;
        }

如果您有一个相当标准的设置,其中每一列都绑定到支持数据对象的一个​​ 属性,并且每一行代表一个对象,则以下应该有效:

dataGridView1.SelectedCells.Select(c => c.Item).Distinct().Count()

这将 return 不同单元格绑定的项目数。由于每个项目都有一行与其绑定,因此它将 return 至少包含一个选定单元格的每一行的计数。

获取包含选定单元格的行数:

int count = dataGridView1.SelectedCells.Cast<DataGridViewCell>()
                                       .Select(c => c.RowIndex).Distinct().Count();

检查是否选择了多行:

var selectedCells = dataGridView1.SelectedCells;
bool check = selectedCells.Count > 0 
         && selectedCells.Cast<DataGridViewCell>().Any(c => c.RowIndex != selectedCells[0].RowIndex);