DataGridView使用技巧四:删除行操作
一、无条件的删除行
默认时,DataGridView是允许用户进行行的删除操作,选中要删除的行,按Delete键可以删除,该操作没有任何提示(只是删除界面显示的数据,不会真实删除数据库中的数据)。如果设置DataGridView对象的AllowUserToDeleteRows属性为False,用户将被禁止删除行。
示例:禁止DataGridView删除行
- this.dgv_PropDemo.AllowUserToDeleteRows = false;
但是,通过行的Remove或者RemoveAt还是可以删除行的。
示例:
- //删除选中的第一行
- this.dgv_PropDemo.Rows.Remove(this.dgv_PropDemo.SelectedRows[]);
如果DataGridView绑定的是DataView的话,通过DataView.AllowDelete也可以控制行的删除。
二、删除行时的条件判断
用户在删除行的时候,将会引发DataGridView.UserDeletingRow事件。在这个事件里,可以判断条件并取消删除操作。(需要将AllowUserToDeleteRows设置为true,并且是使用键盘的delete键时才会触发该事件)。
UserDeletingRow:行被删除时触发。
UserDeletedRow:行被删除以后触发。执行顺序:先执行UserDeletingRow事件后执行UserDeletedRow事件。
示例:
- private void dgv_PropDemo_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
- {
- //删除前确认
- if (MessageBox.Show("确认要删除选中的行吗?", "删除确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
- {
- //如果不是Ok,则删除
- e.Cancel = true;
- }
- }
- private void dgv_PropDemo_UserDeletedRow(object sender, DataGridViewRowEventArgs e)
- {
- MessageBox.Show("该行已被删除");
- }
三、删除选中的行
示例:
- foreach (DataGridViewRow row in this.dgv_PropDemo.SelectedRows)
- {
- if (!row.IsNewRow)
- {
- this.dgv_PropDemo.Rows.Remove(row);
- }
- }
DataGridView使用技巧四:删除行操作的更多相关文章
- DataGridView控件的各种操作总结
一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index ...
- c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index ...
- 转:c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index ...
- DataGridView使用技巧二:设置单元格只读
一.修改ReadOnly属性 1.设置整个DataGridView只读: DataGridView.ReadOnly=true; 此时用户的新增行和删除行操作也被屏蔽了. 2.设置DataGridVi ...
- AJAX的来龙去脉(由来)-如何被封装出来的--ajax发送异步请求(四步操作)
<黑马程序员_超全面的JavaWeb视频教程vedio\JavaWeb视频教程_day23_ajax> \JavaWeb视频教程_day23_ajax\day23ajax_avi\14.打 ...
- python列表(list)的使用技巧及高级操作
python列表(list)的使用技巧及高级操作置顶 2018年03月25日 13:39:41 顽劣的石头 阅读数:5478 标签: python extend bisect list enumera ...
- Git 学习(四)操作修改和版本穿梭
Git 学习(四)操作修改和版本穿梭 之前的章节,已介绍了本地Git库创建.暂存区增.删.改,以及提交版本库:可回顾下命令操作: git add 和 git commit. 光有之前章节的操作,Git ...
- Docker学习(四): 操作容器
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...
- DataGridView使用技巧(七、设定列宽和行高自动调整)----.NET
DataGridView使用技巧(七.设定列宽和行高自动调整)----.NET 1) 设定行高和列宽自动调整 [VB.NET]' 设定包括Header和所有单元格的列宽自动调整DataGridView ...
随机推荐
- pythonl学习笔记——爬虫的基本常识
1 robots协议 Robots协议(也称为爬虫协议.机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可 ...
- PS_Form个性化复杂需求新增Menu并调用Request(案例)
2014-06-01 Created By BaoXinjian
- 使用fork并发处理多个client的请求和对等通信p2p
一.在前面讲过的回射客户/服务器程序中,服务器只能处理一个客户端的请求,如何同时服务多个客户端呢?在未讲到select/poll/epoll等高级IO之前,比较老土的办法是使用fork来实现.网络服务 ...
- HIVE HBASE 整合
一直想将hbase 与hive整合在一起,因为公司项目工期一期紧似一期,故一直推后.还不知道推到什么时候呢. 今天尝试编译hive,看着官方文档.感觉非常easy: 1.svn co http://s ...
- Action中如何通过@Autowired自动注入spring bean ?
1.讲Action纳入spring的IOC控制 <!-- 采用注解方式自动扫描装配 --> <context:component-scan base-package="co ...
- MySQL数据分组GROUP BY 和HAVING
对于分组的理解,可以这样:对GROUP BY子句后面跟随的列名进行分组,然后对每一个分组而不是整个表进行操作. 举例如下:在产品表中,检索每一个供应商提供的商品的数量. mysql> SELEC ...
- Android 常见面试题
这些面试是我之前总结的 .觉得还不错,就贴出来与大家分享一下.当中有不少问题.也是我以前被面试官问过的问题,另一些基础问题总结(既然是基础知识 ,必定是成为一名的 Android 开发者 所必须掌握的 ...
- man手册语法格式
Linux命令很多,但对格式本身解读的文章几乎是空白,都在凭对格式的猜测来写命令,就此在网上搜集此类资料都很少而且很不全面,想找官方的,也没找到.根据自己的理解写一篇出来,希望对初学者有用. 一. ...
- TransitionsTest
CCTransitionScene* createTransition(int nIndex, float t, CCScene* s) { // fix bug #486, without setD ...
- java jvm perf
http://www.oracle.com/technetwork/java/performance-138178.html http://www.oracle.com/technetwork/jav ...