Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# (C) DataGridView:如何使用单元格和行获取所选计数?_C#_Forms_Datagridview_Selected - Fatal编程技术网

C# (C) DataGridView:如何使用单元格和行获取所选计数?

C# (C) DataGridView:如何使用单元格和行获取所选计数?,c#,forms,datagridview,selected,C#,Forms,Datagridview,Selected,所以我有这个 该代码: if(dataGridView1.SelectedRows.Count > 1) { MessageBox.Show("Error: More than one value selected"); return false; } 如果我有2个完全选中的行,它将正确计数为2。 但我想检查是否选择了两行或更多行中的任何单元格 换言之: 在我的图片中,我当前的选择现在返回1,但我希望它返回2

所以我有这个

该代码:

if(dataGridView1.SelectedRows.Count > 1)
        {
            MessageBox.Show("Error: More than one value selected");
            return false;
        }
如果我有2个完全选中的行,它将正确计数为2。 但我想检查是否选择了两行或更多行中的任何单元格

换言之: 在我的图片中,我当前的选择现在返回1,但我希望它返回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()

这将返回不同单元格绑定到的项目数。由于每个项目都有一个绑定到它的行,它将返回至少有一个选定单元格的每一行的计数。

要获取具有选定单元格的行数,请执行以下操作:

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);

是的,dgv是从Oracle SQL表加载的,所以它应该是好的,lemme test.VS2017说没有Select的定义。我需要使用还是组装?使用系统.Linq;我希望它能这么简单,但是SelectedCells没有实现IEnumerable,所以大多数LINQ扩展不能直接用于它。我的错误是,你是对的,你在回答中所做的转换将使它在LINQ中可用。