datagridview复制粘贴行与单元格内容
来源:互联网 发布:spss数据分析案例 编辑:程序博客网 时间:2024/05/20 07:36
最近遇到一个关于datagridview快捷键复制、粘贴、剪切、删除等操作的问题:在一个主菜单中定义了Ctrl+C、Ctrl+V、Ctrl+T、Delete等快捷键操作的主界面中,MDI子窗体的datagridview需要既能够使用这些快捷键操作表格的某一行,也能够在编辑状态操作单元格内容。
复制、粘贴、剪切、删除datagridview某一行内容在网上有很多资料,也不是本文的重点,这里就不做赘述;Datagridview自带Ctrl+C、Ctrl+VCtrl+C、Ctrl+V、Ctrl+T、Delete等快捷键操作。按理说结合两者就能实现功能了,但是二者并不能够在使用快捷键的时候兼容!
下面以Ctrl+C复制操作来说明,其他操作的下面以Ctrl+C复制操作来说明,其他操作的方法都差不多:
主菜单的快捷键会将datagridview自带快捷操作屏蔽掉。软件中是在主窗体的复制函数中调用子窗体的复制函数:
/// <summary>
/// 复制
/// </summary>
private void tsbtnCopy_Click(object sender, EventArgs e)
{
if (Instance.ActiveMdiChild is IEdit)
{
IEdit form = Instance.ActiveMdiChild as IEdit;
form.Copy();
}
}
这样做实现整行复制完全没有问题;但是单元格内容的复制就不行了;无论何时按下Ctrl+C都会进入tsbtnCopy_Click方法,进而到子窗体的复制函数中,这是因为主菜单快捷键屏蔽的结果;要想实现复制单元格内容有如下两个思路:
1. 在复制方法中增加单元格选中内容的复制
2. 想办法在单元格编辑状态时调用datagridview自带的复制方法
思路1:
自己实现datagridview单元格内容的编辑操作,需要获取当前单元格内容的编辑状态;“光标位置”,“选中内容”这些都无法获知;果断放弃这个思路。
思路2:
按下快捷键,调用了子窗体复制函数;可以在函数体中判断是否有单元格处于编辑状态,如果有的话则手动调用datagridview自带复制方法;但是查遍datagridview方法都没有这个实现;细想一下,所有能够输入的编辑框如TextBox、ComboBox、ListBox等都自带复制操作,这应该是这些控件继承的父类或者接口的功能,已经被隐藏起来了。
既然不能直接调用datagridview的复制,那么能不能在子窗体中触发datagridview的复制方法或者说是模拟Ctrl+C按键消息;参照http://blog.csdn.net/zhbog/article/details/6751346 博文在复制方法中触发Ctrl+C按键消息,datagridview仍然不能够复制单元格内容。
实在想不出什么办法,又有其他事情暂时搁置……一周之后偶然间想到这个问题,为什么不从根本上去解决按键消息的问题呢?既然菜单快捷键会阻断datagridview的快捷操作,在datagridview是编辑状态时屏蔽菜单键的快捷操作就行了!
于是在datagridview进入和离开编辑状态时,修改响应菜单快捷键:
/// <summary>
/// 编辑状态,屏蔽菜单快捷键
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
MainForm.Instance.EnableCopy(false);
}
/// <summary>
/// 离开编辑状态,恢复菜单快捷键
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
MainForm.Instance.EnableCopy(true);
}
- datagridview复制粘贴行与单元格内容
- DataGridView鼠标的拖放操作及单元格编辑结束数据复制与单元格单击数据粘贴及两个DataGridView相互拖放操作
- C#从Excel复制内容粘贴到DataGridView
- DataGridView 复制 粘贴
- 通过右键菜单复制只读的 DataGridView 单元格内容
- 复制或粘贴内容到含有隐藏单元格的区域时如何只复制或粘贴可见单元格
- linux文件内容的复制与粘贴
- #VIM# 内容复制粘贴
- vi内容复制粘贴
- C#中datagridview使用tooltip控件显示单元格内容与datagridview自带的tooltip显示单元格内容的方法
- dataGridView单元格内容更改事件
- 网页内容无法复制粘贴
- 网页内容无法复制粘贴
- 复制,粘贴文本框的内容
- 复制内容至粘贴板
- Javascript 复制与粘贴
- 12. 复制与粘贴
- C# 复制与粘贴
- 基于Processing的人物八方向移动(加入图片)演示:X,Y,XY同时到达移动
- Solr之中文分词
- 关于动态数组的愚见
- [leetcode] Sqrt(x)
- mac配置环境变量
- datagridview复制粘贴行与单元格内容
- Pascal's Triangle
- Android Studio 三种添加插件的方式
- Install Subversion 1.8.9 ( SVN Client ) on CentOS/RHEL
- LeetCode Triangle
- Android Log 跟踪
- 怎么清除Android开发中的垃圾代码?
- SDL图形库
- CentOS安装TortoiseSVN 客户端