(C#)DataGridView:如何使用单元格和行获取Selected Count?

时间:2017-11-17 18:28:42

标签: c# forms datagridview selected

所以我有DataGridView

这段代码:

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

如果我有2个完全选择的行,它会正确计数到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;
        }

2 个答案:

答案 0 :(得分:1)

获取所选行的数量:

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

检查是否选择了多行:

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

答案 1 :(得分:0)

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

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

    // have we already added the subview?
    if cell.contentView.subviews.count == 0 {
        // no, so add it here

        let view = UIView()

        view.translatesAutoresizingMaskIntoConstraints = false
        view.backgroundColor = UIColor.orange

        cell.contentView.addSubview(view)

        view.topAnchor.constraint(equalTo: cell.contentView.topAnchor, constant: 0.0).isActive = true
        view.bottomAnchor.constraint(equalTo: cell.contentView.bottomAnchor, constant: 0.0).isActive = true
        view.leadingAnchor.constraint(equalTo: cell.contentView.leadingAnchor, constant: 0.0).isActive = true
        view.trailingAnchor.constraint(equalTo: cell.contentView.trailingAnchor, constant: 0.0).isActive = true

    }

    return cell
}

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