1.    复制
DataGridViewSelectedCellCollection ds;
ds = dataGridView1.SelectedCells;

DataGridViewSelectedRowCollection dr = dataGridView1.SelectedRows;
DataGridViewSelectedColumnCollection dc = dataGridView1.SelectedColumns;

row1 = dataGridView1.SelectedCells[dataGridView1.SelectedCells.Count - 1].RowIndex; //起始行
col1 = dataGridView1.SelectedCells[dataGridView1.SelectedCells.Count - 1].ColumnIndex;//起始列
row2 = dataGridView1.CurrentCell.RowIndex;//终止行
col2 = dataGridView1.CurrentCell.ColumnIndex;//终止列

rowcounts = row2 - row1 + 1;//选中行数
colcounts = col2 - col1 + 1;//选中列数
selcells = new string[rowcounts, colcounts];//定义一个二维数组,保存复制后的数据

for (int i = 0; i < rowcounts; i++)
    for (int k = 0; k < colcounts; k++)
    {
        if (dataGridView1.Rows[row1 + i].Cells[col1 + k].Value.ToString() == "")
            selcells[i, k] = "";
        else
            selcells[i, k] = dataGridView1.Rows[row1 + i].Cells[col1 + k].Value.ToString();
    }
Console.WriteLine("{0},{1},{2},{3}\r\n", row1, col1, row2, col2);
2.    粘贴
row2 = dataGridView1.CurrentCell.RowIndex;
col2 = dataGridView1.CurrentCell.ColumnIndex;
for (int i = 0; i < rowcounts; i++)
    for (int k = 0; k < colcounts; k++)
    {
        dataGridView1.Rows[row2 + i].Cells[col2 + k].Value = selcells[i, k];
    }
3.    等量复制
row1 = dataGridView1.SelectedCells[dataGridView1.SelectedCells.Count - 1].RowIndex; //起始行
col1 = dataGridView1.SelectedCells[dataGridView1.SelectedCells.Count - 1].ColumnIndex;//起始列
row2 = dataGridView1.CurrentCell.RowIndex;//终止行
col2 = dataGridView1.CurrentCell.ColumnIndex;//终止列

rowcounts = row2 - row1 + 1;//选中行数
colcounts = col2 - col1 + 1;//选中列数
selcells = new string[rowcounts, colcounts];//定义一个二维数组,保存复制后的数据

if (colcounts > 1) return;

for (int i = 0; i < rowcounts; i++)
{
    for (int k = 0; k < colcounts; k++)
    {
        dataGridView1.Rows[row1 + i].Cells[col1 + k].Value = dataGridView1.Rows[row1].Cells[col1].Value;
        Console.WriteLine("{0},{1}\r\n", row1 + i, col1 + k);
    }
}
4.    增量复制
try
{
    row1 = dataGridView1.SelectedCells[dataGridView1.SelectedCells.Count - 1].RowIndex; //起始行
    col1 = dataGridView1.SelectedCells[dataGridView1.SelectedCells.Count - 1].ColumnIndex;//起始列
    row2 = dataGridView1.CurrentCell.RowIndex;//终止行
    col2 = dataGridView1.CurrentCell.ColumnIndex;//终止列

rowcounts = row2 - row1 + 1;//选中行数
    colcounts = col2 - col1 + 1;//选中列数
    selcells = new string[rowcounts, colcounts];//定义一个二维数组,保存复制后的数据

if (colcounts > 1) return;

string v1, v2;
    v1 = dataGridView1.Rows[row1].Cells[col1].Value.ToString();
    v2 = dataGridView1.Rows[row1 + 1].Cells[col1].Value.ToString();
    int startpoint = 0, endpoint = 0;

//找到字符串右面的数字部分
    for (int i = 0; i < v1.Length; i++)
    {
        string tmp = v1.Substring(v1.Length - i - 1, 1);
        if (IsNumeric(tmp))
        {
            startpoint = v1.Length - 1 - i;
            continue;
        }
        else
        {
            break;
        }

}
    int startnum = Convert.ToInt16(v1.Substring(startpoint, v1.Length - startpoint));//第一个数字的位置
    string startstr = v1.Substring(0, startpoint);//除去数字部分后的内容;

for (int i = 0; i < rowcounts; i++)
    {
        for (int k = 0; k < colcounts; k++)
        {
            //将数字部分+1,和原来的非数字部分合并;
            dataGridView1.Rows[row1 + i].Cells[col1 + k].Value = startstr + Convert.ToString(startnum + i);
            //Console.WriteLine("{0},{1}\r\n", row1 + i, col1 + k);
        }
    }
}
catch { }

dbgridview内操作粘贴,复制,等量复制,增量复制相关推荐

  1. 【Java文件操作(三)】递归复制文件夹内所有文件

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  2. 并发增量复制垃圾回收 (Concurrent and Incremental Copying GC) 和虚拟内存应用

    本文是对 6.S081 课程中 VM applications 论文阅读中对虚拟内存能应用于 Garbage Collection 的笔记.主要记录垃圾回收的一些算法和解释论文的应用点.内容是从最简单 ...

  3. linux集群自动化脚本和增量复制

    linux集群自动化脚本和增量复制 Linux集群shell自动化脚本和集群增量增量复制 xcall.sh代码: xcall.sh脚本解释: xsync.sh代码: xsync.sh脚本解释: 自定义 ...

  4. 如何将电脑复制的内容粘贴进MobaXterm?如何复制粘贴

    MobaXterm内的复制 复制1:用鼠标左键选中文本,可以在随意地区点击右键,然后在非右键点出属性区的任何地方点击左键一下,就复制上了: 复制2:或者按ctrl+c 电脑主机端复制的内容粘贴 set ...

  5. Numpy 整体复制、按块复制、向量化操作、寻找缺失值、填充缺失值

    1. 整体复制和按块复制 已知数组: In [17]: a = np.array([1,2,3])In [18]: 返回如下数组: array([1, 1, 1, 2, 2, 2, 3, 3, 3, ...

  6. 全量复制 增量复制 异步复制

    全量复制 master执行bgsave,在本地生成一份rdb快照文件 master node将rdb快照文件发送给salve node,如果rdb复制时间超过60秒(repl-timeout),那么s ...

  7. rsync增量复制命令用法和守护进程的配置

    实验系统 rhel6.5 从本地到本地           <========>  cp rsync -avz  src  dst rsync -avz src/ dst 从远程到本地 r ...

  8. linux剪切到另一个文件夹,linux下文件夹操作常见命令如创建、复制、剪切、重命名、清空和删除命令 实例说明...

    linux下文件夹操作常见命令如创建.复制.剪切.重命名.清空和删除命令 实例说明,在home目录下有wwwroot目录,wwwroot下有sinozzz目录,即/home/wwwroot/sinoz ...

  9. windows粘贴板失效,不能复制粘贴解决

    windows粘贴板失效,不能复制粘贴解决 windows粘贴板失效 windows粘贴板失效 之前遇到过几次粘贴板失效,检索答案后,90%的都是重启粘贴板进程,但效果却不尽人意,记录一个我自己试过后 ...

最新文章

  1. 解决bootstrap下的图片自适应问题
  2. 免费的网络推广教大家新站点前期优化如何进行?
  3. Myxls导出excel报表
  4. python做exe开发教程_python做exe开发教程
  5. how to deal with Demodex
  6. 使用valgrind检测内存问题
  7. MySql 复习SQL基础
  8. request.getAttribute()和request.getParameter()区别
  9. 【现代软件工程】第一次作业——词频统计
  10. dubbo实现两个系统之间的通信
  11. E-Prime 软件中常用的 inline 语句
  12. 【转】VS2015安装教程(带图解+下载地址+超详细)
  13. 遗传算法求解带时间窗的VRP问题(python)
  14. 开源的文件服务器有哪些,开源文件服务器
  15. 对入门使用者比较友好的视频剪辑工具推荐
  16. 算法学习:501.二叉搜索树中的众数
  17. C++ new 动态内存 对象初始化
  18. 在OpenCV里学习常见问题汇编27
  19. 2021年甘肃省安全员C证报名考试及甘肃省安全员C证考试报名
  20. JS 0~~100以内能被3整除也能被5整除的个数和总和

热门文章

  1. php编写一个学生类_PHP实现简单的学生信息管理系统(web版)
  2. 行业深度见解•SD-WAN对于企业云的重要性
  3. Vue中数组赋值问题
  4. 利用Flutter写一个跨平台的果核APP(4)——数据存储
  5. linux 命令安装redis
  6. postman设置Cookie上行参数访问接口
  7. [SF] Symfony 组件 BrowserKit 原理
  8. 如何打印Qt中的枚举所对应的字符串
  9. 运营商级网络地址转换(LSN/CGN)方案介绍
  10. 关于多态override/overload