//可在dgv中复制、剪切、粘贴、删除数据

        /// <summary>
/// DataGridView复制
/// </summary>
/// <param name="dgv">DataGridView实例</param>
public static void dgvCopy(DataGridView dgv)
{
if (dgv.GetCellCount(DataGridViewElementStates.Selected) > )
{
try
{
Clipboard.SetDataObject(dgv.GetClipboardContent());
}
catch (Exception MyEx)
{
MessageBox.Show(MyEx.Message, "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
} /// <summary>
/// DataGridView剪切
/// </summary>
/// <param name="dgv">DataGridView实例</param>
public static void dgvCut(DataGridView dgv)
{
dgvCopy(dgv);
try
{
dgvDel(dgv);
}
catch (Exception MyEx)
{
MessageBox.Show(MyEx.Message);
} } ///<summary>
/// DataGridView删除内容
/// </summary>
/// <param name="dgv">DataGridView实例</param>
public static void dgvDel(DataGridView dgv)
{
try
{
int k = dgv.SelectedCells.Count;
for (int i = ; i < k; i++)
{
dgv.SelectedCells[i].Value = "";
}
}
catch (Exception MyEx)
{
MessageBox.Show(MyEx.Message);
}
} /// <summary>
/// DataGridView粘贴
/// </summary>
/// <param name="dt">DataGridView数据源</param>
/// <param name="dgv">DataGridView实例</param>
public static void dgvPaste(DataGridView dgv)
{
try
{
//最后一行为新行
int rowCount = dgv.Rows.Count - ;
int colCount = dgv.ColumnCount;
//获取剪贴板内容
string pasteText = Clipboard.GetText();
//判断是否有字符存在
if (string.IsNullOrEmpty(pasteText))
return;
//以换行符分割的数组
string[] lines = pasteText.Trim().Split('\n');
int txtLength = lines.Length; //Lance.2015-12-03
int cRowIndex = dgv.SelectedCells[].RowIndex;
int cColIndex = dgv.SelectedCells[].ColumnIndex;
for (int i = ; i < txtLength; i++)
{
string[] words = lines[i].Split('\t');
for (int j = ; j < words.Length; j++)
{
dgv.Rows[cRowIndex + i].Cells[cColIndex + j].Value = words[j];
}
} }
catch (Exception MyEx)
{
MessageBox.Show(MyEx.Message);
}
}
 Keys key = e.KeyCode;

            //Delete删除内容
if (key == Keys.Delete)
{
TextDaseOperationClass.dgvDel(dataGridView1);
} if (e.Control!=true)//如果没按Ctrl键
return;
switch (key)
{
case Keys.C:
//按下Ctrl+C复制
TextDaseOperationClass.dgvCopy(dataGridView1);
break; case Keys.V:
//按下Ctrl+V粘贴
TextDaseOperationClass.dgvPaste(dataGridView1);
break; case Keys.X:
//按下Ctrl+V剪切
TextDaseOperationClass.dgvCut(dataGridView1);
break;
}

c#DataGridView复制粘贴删除功能的更多相关文章

  1. Oracle SQL Developer 编辑区不能删除,后退,空格,复制粘贴等功能都失效的解决办法

    Oracle SQL Developer 编辑区不能删除,后退,空格,复制粘贴等功能都失效的解决办法 解决: 打开菜单并选择Tools-prefrence-Accelerators-Load Pres ...

  2. vim复制,粘贴,删除,撤销,替换,光标移动等用法

    我接触linux的时候,用的是nano这个文本编辑器,个人觉得他的最大优点就是方便,快速.打开文件,修改文件,到退出都十分的快速,简单.这一点上比vi,vim要强,但是nano不能显示彩色字,不能进行 ...

  3. IE屏蔽鼠标右键、禁止复制粘贴等功能

    <body oncontextmenu="return false" onselectstart="return false" ondragstart=& ...

  4. Java递归实现操作系统文件的复制、粘贴和删除功能

    通过Java IO递归实现操作系统对文件的复制.粘贴和删除功能,剪切=复制+粘贴+删除 代码示例: import java.io.BufferedInputStream; import java.io ...

  5. vi--文本编辑常用快捷键之复制-粘贴-替换-删除

    这几天刚开始接触vi编辑器,慢慢开始熟悉vi,但是还是感觉诸多不便,比如说复制粘贴删除操作不能用鼠标总是感觉不自在,而且我一般习惯用方向键移动光标,更增加了操作的复杂度,今天在网上搜索了一下,vim编 ...

  6. 通过如何通过js实现复制粘贴功能

    在ie中window.clipboardData(剪切板对象)是可以被获取,所以利用这个方法我们可以实现在IE当中复制粘贴的功能,demo如下! <html> <head> & ...

  7. Eclipse/MyEclipse中使用复制粘贴功能卡的解决办法

    最近在MyEclipse中编辑代码时,使用快捷键进行复制粘贴,经常会导致编辑器短暂的停顿,光标不跟随,居然反应不过来,几近假死. 想来想去应该是编辑上的什么配置或者是IDE的什么功能导致,于是进入Pr ...

  8. Vim 安装、配置及复制粘贴操作

    1.安装:sudo apt-get install vim 2.配置:cd ~ #进入用户主目录 touch .vimrc #.后缀文件不可见 vi .vimrc #打开文件 输入: set cind ...

  9. 转载:vim的复制,删除,粘贴,块操作以及快速替换功能

    掌握如下命令有什么好办法,我可以告诉你唯手熟尔!!多看多练对于VIM而言,复制,删除,粘贴的操作应该是非常多的.这次也做一个总结,关于处理VIM下的复制,删除,粘贴等操作.学会使用帮助文件,命令的帮助 ...

随机推荐

  1. hpuoj--1287--HH实习(斐波那契数巧用)

    问题 D: HH实习 时间限制: 1 Sec  内存限制: 128 MB 提交: 53  解决: 37 [提交][状态][讨论版] 题目描述 这学期到了十五周了,HH突然要去实训中心实习了,想到要拿着 ...

  2. Opencv Mat矩阵中data、size、depth、elemSize、step等属性的理解

    data: uchar类型的指针,指向Mat数据矩阵的首地址.可以理解为标示一个房屋的门牌号: dims: Mat矩阵的维度,若Mat是一个二维矩阵,则dims=2,三维则dims=3,大多数情况下处 ...

  3. Kettle的设计

    不多说,直接上干货! 大家都知道,这2001年以来,一直在同各种ETL工具做斗争,所以Matt 确定了Kettle的一个主要设计目标是尽可能开放.主要就是指: 开发,可读的元数据格式(XML). 开放 ...

  4. Python的Flask框架入门-Ubuntu

    全文请见tuts code:An Introduction to Python's Flask Framework Flask是Python一个小而强大的web框架.学起来简单,用起来也容易,能够帮你 ...

  5. FPGA之阻塞赋值与非阻塞赋值

    Verilog语言中讲的阻塞赋值与非阻塞赋值,但从字面意思来看,阻塞就是执行的时候在某个地方卡住了,等这个操作执行完在继续执行下面的语句,而非阻塞就是不管执行完没有,我不管执行的结果是什么,反正我继续 ...

  6. 【原创】使用Kettle的一些心得和经验

    用kettle做etl也有段时间了,遇到很多问题,总结了一下. [关于版本的问题] kettle常用的版本有4.1和4.4,对于4.1版本: 1.该版本的兼容性有点差,在某些机器上运行会启动失败,或者 ...

  7. ACM-ICPC 2018 焦作赛区网络预赛 L:Poor God Water(矩阵快速幂)

    God Water likes to eat meat, fish and chocolate very much, but unfortunately, the doctor tells him t ...

  8. python中index、slice与slice assignment用法

    python中index.slice与slice assignment用法 一.index与slice的定义: index用于枚举list中的元素(Indexes enumerate the elem ...

  9. IPv6理论知识详解

    1. IPv6地址表示 IPv6地址可以表示为128位由0.1组成的字符串,为了便于计算机理解,将128位的二进制字符串表示为32位的十六进制字符串,为了便于理解,人们将其划分为8组,组与组之间用 : ...

  10. 织梦(dedecms)循环调用多级子栏目如二级栏目下三级栏目

    本文是关于织梦DedeCMS调用多级子栏目的,拿来分享下. 后台已经建好栏目,对于产品展示栏 栏目导航如下图所示:  复制代码 代码如下: {dede:channelartlist cacheid=' ...