我有以下代码:
public double[] ExtractGridData(DataGridView grid)
{
numCells = grid.SelectedCells.Count;
numberOfRows = grid.SelectedRows.Count;
numberOfColumns = grid.SelectedColumns.Count;
double[] cellsData = new double[numCells];
foreach (DataGridViewCell cell in grid.SelectedCells)
{
if (cell.Value != null)
cellsData[cell.RowIndex] = Convert.ToDouble(cell.Value);
}
MessageBox.Show(numberOfRows.ToString());
return cellsData;
}
我甚至尝试使用以下代码:
Int32 selectedRowCount = grid.Rows.GetRowCount(DataGridViewElementStates.Selected);
我只得到总细胞数,坚果不是数字或选定的行或列。问题可能是什么?
答案 0 :(得分:1)
如果您没有填充SelectedRows
,则可能没有正确的SelectionMode设置(在那里,完成了);
SelectionMode属性必须设置为FullRowSelect或RowHeaderSelect,以便使用选定的行填充SelectedRows属性。
如果您需要选择列和行,而不仅仅是整个行或列,那么最好使用SelectedCells
,无论选择哪个SelectionMode,都会使用{{3}}。
编辑:如果您需要所选行和列的数量,这可能有所帮助(未经测试,因为我没有方便的WIndows框)
int xsize = 0, ysize = 0;
var b = a.SelectedCells.Cast<DataGridViewCell>().ToList();
if (b.Any())
{
ysize = b.Max(x => x.RowIndex) - b.Min(x => x.RowIndex) + 1;
xsize = b.Max(x => x.ColumnIndex) - b.Min(x => x.ColumnIndex) + 1;
}
请注意,如果您选择(1,1)处的单个单元格和(7,7)处的另一个单元格,即使并未选择范围内的所有单元格,也会获得7x7的大小。