0

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

4

1 回答 1

0

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

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

您可以修改密钥创建过程以实现所需的顺序。您真的确定不需要有关选择位置的信息吗?

于 2013-05-07T06:49:50.353 回答