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中可用。