我正在开发一个 C# 应用程序,其中包含许多空的 DataGridView。用户必须使用从 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
我的数据 GridView 看起来像:
6 4 2
5 3 1
我真的不知道该怎么做才能解决这个问题...... 提前致谢
最佳答案
- 将剪贴板数据转换为二维数组。记住每个维度的长度。
- 遍历选定的单元格并找到左上角和右下角的单元格。从中您可以确定它的尺寸是否合适。
- 使用双循环,使用左上角的单元格坐标作为偏移量,将剪贴板数据从数组位置直接映射到单元格坐标(不使用选定的单元格)。
或者,您可以创建一个包含 Row、Col 和 Value 属性的小型类/结构的列表,而不是二维数组。然后只需遍历它而不是双循环。
关于c# - Datagridview.SelectedCells顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10103187/