将数据DataGrid Cells中的值存储到数组中,并获取数字或列和行

本文关键字:数字 获取 Cells DataGrid 数据 存储 数组 | 更新日期: 2023-09-27 18:12:02

我有一个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中的单元格

将数据DataGrid Cells中的值存储到数组中,并获取数字或列和行

您需要对结果(或按位置选定的单元格)进行排序。例如:

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

您可以修改密钥创建过程以达到所需的顺序。你真的不需要关于招聘职位的信息吗?