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
我真的不知道该怎么做才能解决这个问题...提前致谢
- 将剪贴板数据转换为二维数组。记住每个维度的长度。
- 循环访问所选单元格并找到左上角和右下角的单元格。由此您可以确定它的大小合适。 使用
- 双循环,使用左上角的单元格坐标作为偏移量,将剪贴板数据从数组位置直接映射到单元格坐标(不使用所选单元格)。
或者,您可以创建一个包含属性 Row、Col 和 Value 的小型类/结构的列表,而不是二维数组。然后只是遍历它而不是双循环。
替换
dataGridView.SelectedCells[i].Value = cell;
跟
dataGridView.SelectedCells[(dataGridView.SelectedCells.Count-1) - i].Value = cell;