Datagridview.SelectedCells order

本文关键字:order SelectedCells Datagridview | 更新日期: 2023-09-27 18:30:38

我正在开发一个 C# 应用程序,其中包含许多空的 DataGridViews。用户必须用从excel复制/粘贴的数据填充它们。我所做的如下:

int i = 0;
string s = Clipboard.GetText();
// Separate lines
string[] lines = Regex.Split(s, "'r'n");
foreach (string line in lines)
{
    // Separate each cell
    string[] cells = line.Split(''t');
    foreach (string cell in cells)
    {
        // If we selected as many cells as copied
        if (dataGridView.SelectedCells.Count == (lines.Length-1)*(cells.Length))
        {
            dataGridView.SelectedCells[i].Value = cell;
            i++;
        }
    }
}

问题是,如果我复制这样的东西(在 excel 上):

1   2   3
4   5   6

我的数据网格视图将如下所示:

6   4   2
5   3   1

我真的不知道该怎么做才能解决这个问题...提前致谢

Datagridview.SelectedCells order

  1. 将剪贴板数据转换为二维数组。记住每个维度的长度。
  2. 循环访问所选单元格并找到左上角和右下角的单元格。由此您可以确定它的大小合适。
  3. 使用
  4. 双循环,使用左上角的单元格坐标作为偏移量,将剪贴板数据从数组位置直接映射到单元格坐标(不使用所选单元格)。

或者,您可以创建一个包含属性 Row、Col 和 Value 的小型类/结构的列表,而不是二维数组。然后只是遍历它而不是双循环。

替换

dataGridView.SelectedCells[i].Value = cell;

dataGridView.SelectedCells[(dataGridView.SelectedCells.Count-1) - i].Value = cell;