C# Winform实现表格复制粘贴效果

 更新时间:2023年07月27日 09:39:32   作者:Csharp 小记  
这篇文章主要为大家学习介绍了如何通过C# 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. 最后来看看效果

到此这篇关于C# Winform实现表格复制粘贴效果的文章就介绍到这了,更多相关C# Winform复制粘贴内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C# 开发(创蓝253)手机短信验证码接口的实例

    C# 开发(创蓝253)手机短信验证码接口的实例

    下面小编就为大家分享一篇C# 开发(创蓝253)手机短信验证码接口的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • C#使用throw和throw ex抛出异常的区别介绍

    C#使用throw和throw ex抛出异常的区别介绍

    这篇文章介绍了C#使用throw和throw ex抛出异常的区别,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • winform创建不规则窗体的方法

    winform创建不规则窗体的方法

    这篇文章主要介绍了winform创建不规则窗体的方法,涉及C#窗体创建的相关参数设置技巧,非常具有实用价值,需要的朋友可以参考下
    2015-09-09
  • 快速了解如何在.NETCORE中使用Generic-Host建立主机

    快速了解如何在.NETCORE中使用Generic-Host建立主机

    这篇文章主要介绍了如何在.NETCORE中使用Generic-Host建立主机,文中代码非常详细,可供大家参考,感兴趣的朋友不妨阅读完
    2020-05-05
  • C# 创建控制台应用程序

    C# 创建控制台应用程序

    这篇文章主要介绍了C# 创建控制台应用程序,在学习C#语言的时候,首先要学习控制台的应用程序,这样才能专注于语言的学习,减少学习的梯度,也有利于输出自己需要输出的内容,一定要先使用控制台的应用程序的方式,下面就和小编一起学习该内容吧
    2021-10-10
  • C#实现向指定文本文件添加内容的方法

    C#实现向指定文本文件添加内容的方法

    这篇文章主要介绍了C#实现向指定文本文件添加内容的方法,涉及C#操作文本文件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • C#中 const 和 readonly 的不同

    C#中 const 和 readonly 的不同

    const 和 readonly 的区别,总是不太清楚,于是查了查资料。
    2013-04-04
  • C# Marshal类基本概念和入门实例讲解

    C# Marshal类基本概念和入门实例讲解

    这篇文章主要介绍了C# Marshal类基本概念和入门实例,具有很好的参考价值,希望对大家有所帮助。
    2023-02-02
  • C#一个方法返回多个值示例

    C#一个方法返回多个值示例

    这篇文章主要介绍了C#一个方法返回多个值示例,需要的朋友可以参考下
    2014-02-02
  • C#利用GDI+给图片添加文字(文字自适应矩形区域)

    C#利用GDI+给图片添加文字(文字自适应矩形区域)

    这篇文章主要给大家介绍了关于C#利用GDI+给图片添加文字(文字自适应矩形区域)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2018-04-04

最新评论