Winform表格复制粘贴效果

前言:这是前几天有粉丝留言咨询的一个问题,想实现在Winform中对表格数据进行批量复制粘贴。我这边给出的方案就是直接操作数据集了,个人认为这种方式是最简单的了。其实我觉得在Winform数据表格中,无论是自带的DataGridView还是其他第三方的Grid控件,大部分情况都可以优先考虑通过操作数据集来实现,而不要优先考虑操作UI,即复杂又困难。.

以下代码可以在Excel与DataGridView中实现相互复制粘贴,目前只是做了一个效果出来,具体的复杂情况需要根据自身需求来做动态调整。也可部分参考之前写的一篇

C# 表格数据转实体代码
  1. 先说下实现原理,其实可以观察Excel的复制数据,即把Excel复制两行数据粘贴到记事本中,会发现列与列之间是通过制表符来区分的,而行与行之间就是换行符了。

  2. 得到这个结果就可以直接处理粘贴板数据了,只要按照上面的格式进行字符串拼接或者拆分就行

  3. 接下来看下实现代码,首先随便定义一个实体类用来绑定数据源,然后添加几行测试数据

private class Model        {            public int ID { get; set; }            public string Name { get; set; }        }        BindingList<Model> BindData=new BindingList<Model>();        private void Form1_Load(object sender, EventArgs e)        {            BindData.Add(new Model { ID=1,Name="张三"});            BindData.Add(new Model { ID = 2, Name = "李四" });            BindData.Add(new Model { ID = 3, Name = "王五" });            gridViewEx1.DataSource = BindData;        }

4. 在KeyDown事件中处理复制粘贴的数据,即Ctrl+CCtrl+V

 private void gridViewEx1_KeyDown(object sender, KeyEventArgs e)        {            if (e.Control && e.KeyCode == Keys.C)            {                string data = "";                var rows = gridViewEx1.SelectedRows;                foreach (DataGridViewRow row in rows)                {                    foreach (DataGridViewColumn column in gridViewEx1.Columns)                    {                        data += row.Cells[column.Name] + "\t";                    }                    data += "\r";                }                Clipboard.SetText(data);                Layer.Success("复制成功");            }            if (e.Control && e.KeyCode == Keys.V)            {                string data = Clipboard.GetText();                string[] rows = data.Split(new string[] { "\r\n"},StringSplitOptions.RemoveEmptyEntries);                foreach (string row in rows)                {                    string[] columns = row.Split('\t');                    BindData.Add(new Model { ID = Convert.ToInt32(columns[0]), Name = columns[1] });                }
                Layer.Success("粘贴成功");            }        }

5. 最后来看看效果

Winform表格复制粘贴效果