WinForm中DataGridView复制选中单元格内容解决方案
WinForm中DataGridView鼠标选中单元格内容复制方案
1、CTR+C快捷键复制
前提:该控件ClipboardCopyMode属性设置值非Disable;
2.鼠标框选,自定义代码实现复制
dataGridView1.SelectedCells可以获取单所有选中单元格。但是遍历单元格时,发现单元格顺序与界面显示顺序可能不一致。
Datagridview中selectionMode属性与顺序有关
通过代码输出各单元格行列索引来确定格子。代码如下:
private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
var currcell = dataGridView1.CurrentCellAddress;
Console.WriteLine($"当前单元格{currcell.Y}--{currcell.X}");
var cells = dataGridView1.SelectedCells;
Console.WriteLine($"选中单元格数{cells.Count}");
for (int i = ; i < cells.Count; i++)
{
Console.WriteLine($"第{i+1}个格子:行:{cells[i].RowIndex}列:{cells[i].ColumnIndex}");
}
}
2.1selectionMode=FullRowSelect
case1:
框选单元格集合元素顺序
当前单元格4--2
选中单元格数33
第1个格子:行:4列:0
第2个格子:行:4列:1
第3个格子:行:4列:2
第4个格子:行:4列:3
第5个格子:行:4列:4
第6个格子:行:4列:5
第7个格子:行:4列:6
第8个格子:行:4列:7
第9个格子:行:4列:8
第10个格子:行:4列:9
第11个格子:行:4列:10
第12个格子:行:3列:0
第13个格子:行:3列:1
第14个格子:行:3列:2
第15个格子:行:3列:3
第16个格子:行:3列:4
第17个格子:行:3列:5
第18个格子:行:3列:6
第19个格子:行:3列:7
第20个格子:行:3列:8
第21个格子:行:3列:9
第22个格子:行:3列:10
第23个格子:行:2列:0
第24个格子:行:2列:1
第25个格子:行:2列:2
第26个格子:行:2列:3
第27个格子:行:2列:4
第28个格子:行:2列:5
第29个格子:行:2列:6
第30个格子:行:2列:7
第31个格子:行:2列:8
第32个格子:行:2列:9
第33个格子:行:2列:10
case2:
框选单元格集合元素顺序
当前单元格9--5
选中单元格数33
第1个格子:行:9列:0
第2个格子:行:9列:1
第3个格子:行:9列:2
第4个格子:行:9列:3
第5个格子:行:9列:4
第6个格子:行:9列:5
第7个格子:行:9列:6
第8个格子:行:9列:7
第9个格子:行:9列:8
第10个格子:行:9列:9
第11个格子:行:9列:10
第12个格子:行:10列:0
第13个格子:行:10列:1
第14个格子:行:10列:2
第15个格子:行:10列:3
第16个格子:行:10列:4
第17个格子:行:10列:5
第18个格子:行:10列:6
第19个格子:行:10列:7
第20个格子:行:10列:8
第21个格子:行:10列:9
第22个格子:行:10列:10
第23个格子:行:11列:0
第24个格子:行:11列:1
第25个格子:行:11列:2
第26个格子:行:11列:3
第27个格子:行:11列:4
第28个格子:行:11列:5
第29个格子:行:11列:6
第30个格子:行:11列:7
第31个格子:行:11列:8
第32个格子:行:11列:9
第33个格子:行:11列:10
2.2selectionMode=CellSelect
case1:
框选单元格集合元素顺序
当前单元格3--4
选中单元格数9
第1个格子:行:3列:4
第2个格子:行:2列:4
第3个格子:行:1列:4
第4个格子:行:3列:3
第5个格子:行:3列:2
第6个格子:行:2列:3
第7个格子:行:1列:3
第8个格子:行:2列:2
第9个格子:行:1列:2
case2:
框选单元格集合元素顺序
当前单元格5--2
选中单元格数6
第1个格子:行:5列:2
第2个格子:行:4列:2
第3个格子:行:3列:2
第4个格子:行:2列:2
第5个格子:行:1列:2
第6个格子:行:0列:2
case3:
框选单元格集合元素顺序
当前单元格6--4
选中单元格数10
第1个格子:行:6列:5
第2个格子:行:6列:4
第3个格子:行:7列:5
第4个格子:行:7列:4
第5个格子:行:10列:4
第6个格子:行:9列:4
第7个格子:行:8列:4
第8个格子:行:8列:5
第9个格子:行:9列:5
第10个格子:行:10列:5
case4:
框选单元格集合元素顺序
当前单元格7--5
选中单元格数6
第1个格子:行:7列:5
第2个格子:行:8列:5
第3个格子:行:9列:5
第4个格子:行:10列:5
第5个格子:行:11列:5
第6个格子:行:12列:5
case5:Ctr键+鼠标点选
框选单元格集合元素顺序
当前单元格0--4
选中单元格数7
第1个格子:行:0列:4
第2个格子:行:15列:5
第3个格子:行:12列:2
第4个格子:行:2列:8
第5个格子:行:8列:5
第6个格子:行:5列:3
第7个格子:行:3列:2
case7:Shift+鼠标点选
框选单元格集合元素顺序
当前单元格8--2
选中单元格数8
第1个格子:行:8列:2
第2个格子:行:7列:2
第3个格子:行:6列:2
第4个格子:行:5列:2
第5个格子:行:4列:2
第6个格子:行:3列:2
第7个格子:行:2列:2
第8个格子:行:1列:2
case7:Shift+鼠标点选
框选单元格集合元素顺序
当前单元格7--4
选中单元格数12
第1个格子:行:7列:4
第2个格子:行:6列:4
第3个格子:行:5列:4
第4个格子:行:7列:3
第5个格子:行:6列:3
第6个格子:行:5列:3
第7个格子:行:7列:2
第8个格子:行:6列:2
第9个格子:行:5列:2
第10个格子:行:4列:4
第11个格子:行:4列:3
第12个?褡樱盒?4列:2
总结
选中单元格在集合中添加顺序并无明显的规律,博客中有人建议通过选中单元格集合第一个与最后一个元素的行列来确定选中的区域内元素,可见通过上面的实验,这种做法显然是错误的。
解决思路:
1、可以遍历单元格集合对其中元素位置按照先行后列的顺序重新排位,再遍历单元格获取单元格值进行拼接到剪切板。但此法再数据量大时效率应该比较低。
WinForm中DataGridView复制选中单元格内容解决方案的更多相关文章
- winform中dataGridView单元格根据值设置新值,彻底解决绑定后数据类型转换的困难
// winform中dataGridView单元格在数据绑定后,数据类型更改困难,只能迂回实现.有时候需要将数字变换为不同的文字描述,就会出现int32到string类型转换的异常,借助CellFo ...
- DataGridView中实现点击单元格Cell动态添加自定义控件
场景 鼠标点击DataGridView的某个单元格时,此单元格添加一个自定义的控件,这里以 添加下拉框为例 效果 注: 博客主页: https://blog.csdn.net/badao_liuman ...
- EXCEL中统计单元格内容出现次数
参考网站: https://jingyan.baidu.com/article/7c6fb428dfcc9580642c90ae.html 统计单元格内容出现次数是工作中经常会涉及到的问题. 那么,如 ...
- XAF 如何从Excel复制多个单元格内容到GridView(收藏)
XAF 如何从Excel复制多个单元格内容到GridView 2012年04月11日 ⁄ 综合 ⁄ 共 10998字 ⁄ 字号 小 中 大 ⁄ 评论关闭 how to paste some excel ...
- js实现表格中不同单元格内容的替换(不同浏览器的节点属性兼容问题)
-------> 效果:点击右下角单元格,左下角单元格内容被替换成和左上角相同,如上图所示. 实现方式:分别获取各个节点,并将左边节点的内容修改成左上方节点的内容. 代码: 注意的地方: ...
- EasyUI Datagrid 鼠标悬停显示单元格内容 复制代码
EasyUI Datagrid 鼠标悬停显示单元格内容 ,halign:, align: 0 « 上一篇:LINQ to Entities 中的查询» 下一篇:去掉字符串中的非数字字符 posted ...
- EXCEL中,如何引用一个单元格中的数据,作为另一个单元格内容中的一部分?
https://zhidao.baidu.com/question/230715654.html 假设单元格A1值是8(该值由函数计算得出),我要在单元格B1中引用A1的值,但只是作为B1单元格内容中 ...
- C# DataGridView在单元格提示里(ToolTip)显示完整的单元格内容
当单元格内容太多时,则会忽略后面的内容 解决方案: 添加Dgv鼠标移到单元格事件时,设置当前单元格的ToolTipText属性内容为当前单元格内容 void From_Load(object send ...
- C# Winform中DataGridView的DataGridViewCheckBoxColumn使用方法
下面介绍Winform中DataGridView的DataGridViewCheckBoxColumn使用方法: DataGridViewCheckBoxColumn CheckBox是否选中 在判断 ...
随机推荐
- Chromium的无锁线程模型C++代码示例
引言 作者:程序员bingo,主要关注客户端架构设计.性能优化.崩溃处理,有多年的Chromium浏览器开发经验. 多线程一直是软件开发中最容易出问题的环节,很多的崩溃.卡死问题都与多线程有关.在常用 ...
- R|tableone 快速绘制文章“表一”-基线特征三线表
首发于“生信补给站” :https://mp.weixin.qq.com/s/LJfgxbTqsp8egnQxEI0nJg 生物医学或其他研究论文中的“表一”多为基线特征的描述性统计.使用R单独进行统 ...
- Netty之缓冲区ByteBuf解读(二)
上篇介绍了 ByteBuf 的简单读写操作以及读写指针的基本介绍,本文继续对 ByteBuf 的基本操作进行解读. 读写指针回滚 这里的 demo 例子还是使用上节使用的. ByteBuf buf = ...
- (转)C++ 虚函数表解析
原文地址:http://blog.csdn.net/haoel/article/details/1948051 C++ 虚函数表解析 陈皓 http://blog.csdn.net/haoel 前言 ...
- 《JavaScript 模式》读书笔记(2)— 基本技巧3
这是基本技巧的最后一篇内容,这篇内容示例代码并不多.主要是概念比较多一点. 编码约定 确定并一致遵循约定比这个具体约定是什么更为重要. 一.缩进 无论是使用tab还是空格,只要是一致遵循的,是什么并不 ...
- 深入理解计算机系统 (CS:APP) Lab2 - Bomb Lab 解析
原文地址:https://billc.io/2019/04/csapp-bomblab/ 写在前面 CS:APP是这学期的一门硬核课程,应该是目前接触到最底层的课程了.学校的教学也是尝试着尽量和CMU ...
- Python基础篇(一)_基本语法元素
Python基础篇——基本语法元素 缩进:体现强制可读性,一般缩进4个空格.一个或多个Tab 注释:单行注释----以 # 开头 多行注释----每行以 # 开头,以 # 结束 变量:无须提前声明.可 ...
- google recaptcha-v2
最近在给公司的网页把传统的输入字符数字的验证码改google reCAPTCHA验证,就写写我学到的和一些我的理解!说得不好请勿怪!有兴趣可以的去https://developers.google.c ...
- C/C++、C#、JAVA(二):基本类型和转换操作
基本类型和转换操作 数据类型 C语言中的基本类型如下. 类型 存储大小 值范围 char 1 字节 -128 到 127 或 0 到 255 unsigned char 1 字节 0 到 255 si ...
- Lua Table pairs输出顺序问题 (版本差异 解决数字索引间断并兼容字符串索引)
问题标签: Lua Table 迭代器;Lua Table 输出顺序; Lua Table 顺序输出;Lua Table 数字索引 字符串索引;Lua Table pairs; 问题背景: 使用pai ...