C# 将数据网格单元格中的值存储到数组中并获取数字或列和行?
我有一个DataGridView,需要对从中提取的数据进行一些操作。我事先不知道行数和列数,这取决于您使用鼠标选择数据的方式(类似于在电子表格中的方式) 以下是我正在使用的代码:C# 将数据网格单元格中的值存储到数组中并获取数字或列和行?,c#,.net,visual-studio-2010,datagrid,datagridview,C#,.net,Visual Studio 2010,Datagrid,Datagridview,我有一个DataGridView,需要对从中提取的数据进行一些操作。我事先不知道行数和列数,这取决于您使用鼠标选择数据的方式(类似于在电子表格中的方式) 以下是我正在使用的代码: public double[] ExtractGridData(DataGridView grid) { int numCells = grid.SelectedCells.Count; double[] cellsData = new double[numCells];
public double[] ExtractGridData(DataGridView grid)
{
int numCells = grid.SelectedCells.Count;
double[] cellsData = new double[numCells];
foreach (DataGridViewCell cell in grid.SelectedCells)
{
if (cell.Value != null)
cellsData[cell.RowIndex] = Convert.ToDouble(cell.Value);
}
return cellsData;
}
一个问题是,值的存储方式取决于选择的方向。有没有办法确保单元格(0,0)是数组中的第一个值,单元格(0,1)是第二个值,依此类推
我希望最终结果是一个二维矩阵,行和列。所以我计划找到列数,然后把这个数组变成二维数组。因此,现在我可以在datagridview中找到数组中每行或单元格的总数。您需要对结果(或按位置选择的单元格)进行排序。例如:
public double[] ExtractGridData(DataGridView grid)
{
int numCells = grid.SelectedCells.Count;
double[] cellsData = new double[numCells];
int[] cellsKeys = new int[numCells];
int cnt = 0;
foreach (DataGridViewCell cell in grid.SelectedCells)
{
if (cell.Value != null)
{
cellsData[cnt] = Convert.ToDouble(cell.Value);
cellsKeys[cnt] = cell.RowIndex + cell.ColumnIndex * grid.ColumnCount;
cnt++;
};
}
Array.Sort(cellsKeys, cellsData);
return cellsData;
}
您可以修改密钥创建过程以实现所需的顺序。确实不需要有关选择位置的信息吗?您是指选定行中的数据项吗?@matzone-选择将是几行和几列。就像一个矩形矩阵。