C# 将数据网格单元格中的值存储到数组中并获取数字或列和行?

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];

我有一个DataGridView,需要对从中提取的数据进行一些操作。我事先不知道行数和列数,这取决于您使用鼠标选择数据的方式(类似于在电子表格中的方式)

以下是我正在使用的代码:

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-选择将是几行和几列。就像一个矩形矩阵。