检查选择范围跨越DataGridView的多少行

时间:2019-01-07 19:03:19

标签: c# winforms datagridview

DataGridView.SelectedRows

似乎只对全部选中的行进行计数。

如果我从中选择多个单元格单行DataGridView.SelectedRows似乎总是返回0(如果有多于一列)。

如何获取用户选择跨越的行数?

2 个答案:

答案 0 :(得分:1)

我想您将不得不对它们进行唯一计数:

HashSet<int> rowIndexes = new HashSet<int>();
foreach (DataGridViewCell cell in dgv.SelectedCells) {
  if (!rowIndexes.Contains(cell.RowIndex)) {
    rowIndexes.Add(cell.RowIndex);
  }
}

selectedRowCount = rowIndexes.Count;

答案 1 :(得分:0)

一种方法是迭代每行的每个单元格并检查单元格的.Selected属性,尽管在发布此内容后,我看到了LarsTech的答案,它可能更有效,因为它只查看选定的单元格:

//Variable to hold the selected row count
int selectedRows = 0;
//iterate the rows
for(int x = 0; x < DataGridView.Rows.Count; x++)
{
   //iterate the cells
   for(int y = 0; y < DataGridView.Rows[x].Cells.Count; y++)
   {
        if(DataGridView.Rows[x].Cells[y] != null)
           if(DataGridView.Rows[x].Cells[y].Selected)
           {
              //If a cell is selected consider it a selected row and break the inner for
              selectedRows++;
              break;
           }
   }


}