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是否选中 在判断 ...
随机推荐
- 项目测试中发现产品bug怎么办
我所在的产品线,并非公司最大最强的产品 甚至为了推广我们这个产品,一般会拿给客户先免费试用 而在试用之前,是要经过一番通测的,测得很急,测得很快 所以产品bug非常多 那么在测试项目的时候,自然会发现 ...
- 纯 css column 布局实现瀑布流效果
原理 CSS property: columns.CSS属性 columns 用来设置元素的列宽和列数. 兼容性 chrome 50+ IE 10+ android browser 2.1+ with ...
- Linux下MongoDB单实例的安装和配置详解
推荐网站 MongoDB官网:http://www.mongodb.org/ MongoDB学习网站:http://www.runoob.com/mongodb 一.创建MongoDB的资源目录和安装 ...
- 数学-Matrix Tree定理证明
老久没更了,冬令营也延期了(延期后岂不是志愿者得上学了?) 最近把之前欠了好久的债,诸如FFT和Matrix-Tree等的搞清楚了(啊我承认之前只会用,没有理解证明--),FFT老多人写,而Matri ...
- markdown从入门到放弃word和PDF
Markdown是一个「轻量级」的「标记语言」. 淡定!!!我知道很多"编外人员"看到这句话之后已经没有兴趣再看下去了. 但是请不要关掉这个页面!!! Markdown很简单!!! ...
- str的常用方法
注:s表示定义的一个字符串变量,如:s = 'hello string' 1. s.index() 查找元素,若查到则返回该元素索引,含多个该元素则返回第一个,查不到则报错 s = 'hello ...
- react build本地相对目录 "homepage": ".", package.json
react build相对目录 "homepage": ".", package.json
- 在Servlet端获取html页面选中的checkbox值,request获取页面checkbox(复选框)值
html端代码: 选项框: <input type="checkbox" name="crowd" value="选项一">选项 ...
- 增删改查-java(新手)
PreparedStatement: 方法: Connection: 方法: 实例: 1.查询: package cn.chuang.JdbcDome; import java.sql.*; pu ...
- [Alg] 文本匹配-单模匹配-KMP
1. 暴力求解 如下图所示.蓝色的小三角表示和sequence比较时的开始字符,绿色小三角表示失败后模式串比对的开始字符,红色框表示当前比较的字符对. 当和模式串发生不匹配时,蓝色小三角后移一位,绿色 ...