c# - Datagridview.SelectedCells顺序

标签 c# excel datagridview clipboard copy-paste

我正在开发一个 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

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

最佳答案

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

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

关于c# - Datagridview.SelectedCells顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10103187/

相关文章:

c# - 通过复选框更改一个项目控件的可见性

c++ - 附加相同的插件,但来自 Excel 上的不同文件夹启动

java - 用于运行 Java 程序的 Microsoft Excel 宏

c# - 如何在 C# 中动态创建 DataGridView?

c# - 以编程方式将用户名和密码发布到登录页面

c# - 解析器错误消息 : 'FCR2.abs' is not allowed here because it does not extend class 'System.Web.UI.Page'

c# - SLsvcUtil.exe 代理生成的类不继承自 INotifyPropertyChanged

vba - 在 VBA 运行时更新图表

c# - 将项目添加到数据 GridView 中的组合框

vb.net - 问题检测 DataGridView 中的复选框状态