统计DataGridView中选定的行数
本文关键字:DataGridView 统计 | 更新日期: 2023-09-27 18:12:12
如何在DataGridView中计算选定行的数量?
假设我突出显示了5行,我如何在消息框中显示它?
请帮助我在c#中使用WinForms !
需要设置YourGridView.MultiSelect=true
;多选当MultiSelect属性设置为true时,可以在DataGridView控件中选择多个元素(单元格、行或列)。要选择多个元素,用户可以在单击要选择的元素时按住CTRL键。可以通过点击第一个元素来选择连续的元素,然后按住SHIFT键,点击最后一个元素来选择。
则可以使用SelectRows。Count属性SelectedRows
MessageBox.Show(yourDataGridView.SelectedRows.Count.ToString());
在VB中。NET中可以使用Lambda表达式。应该很容易翻译成C:
SelectedRowCount = DataGridView1.SelectedCells.OfType(Of DataGridViewCell)().Select(Function(x) x.RowIndex).Distinct().Count()
如果您的DataGridView允许Cell Select,您不能直接获得所选行的计数。相反,您必须遍历SelectedCells集合,以计算不同的选定行数。下面是一个函数,它将根据所选单元格返回当前所选行的计数。
public int DataGridViewRowCount(DataGridView dgv)
{
Dictionary<int, int> RowsFound = new Dictionary<int, int>();
int nCells = dgv.GetCellCount(DataGridViewElementStates.Selected);
int nRows = 0;
if (dgv.AreAllCellsSelected(true))
nRows = dgv.Rows.Count;
else
{
for (int i = 0; i < nCells; i++)
{
int rix = dgv.SelectedCells[i].RowIndex;
if (!RowsFound.ContainsKey(rix))
RowsFound.Add(rix, rix);
}
nRows = RowsFound.Count;
}
return nRows;
}
注意,对于大量的行(因此有大量的选定单元格),AreAllCellsSelected函数将让您避免迭代,只返回网格中的行数。AreAllCellsSelected的参数是一个布尔值,是否包含不可见的单元格。
在处理大量选定的单元格时,使用Dictionary而不是List来利用键索引和性能。