DataGridView.SelectedRows
似乎只对全部选中的行进行计数。
如果我从中选择多个单元格单行DataGridView.SelectedRows
似乎总是返回0(如果有多于一列)。
如何获取用户选择跨越的行数?
答案 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;
}
}
}