DevExpress GridControl GridView 按Ctrl+Delete键实现删除选择行的实现方法

本文介绍了一种在GridView中使用ProcessGridKey事件实现快捷键删除行的方法,解决了编辑状态下KeyDown事件不触发的问题。通过注册GridControl的ProcessGridKey事件,并在事件处理函数中检查Delete键和Ctrl键的状态,以及允许删除行的选项,实现了Ctrl+Delete快捷键删除所选行的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于GridView按快捷键删除行,传统的方式都是用GridView的keyDown事件来实现的,但是用GridView的KeyDown事件有一个烦恼就是当GridView处于编辑状态的时候,KeyDown事件是不会触发的,原因是此时的焦点并不在GridView上,而是处于一个当前编辑框上,遇到这种情况,要么就是让不允许有编辑,要么就是在GridView的ShownEditor事件触发的时候注册当前编辑框即gridView.ActiveEditor的keyDown事件,这两种方式都着实都不是完美的解决方案,今天无意间发现其实GridControl还提供一个用来完美解决这个问题的事件ProcessGridKey。

关于这个事件的说明如图所示,意思就是能够在网格控件的焦点视图和活动的就地编辑状态下按键的时候触发,这样一来就完美解决了处于编辑状态下不触发GridView的KeyDown事件问题。

利用Ctrl+Delete按键来删除行的代码如下:

注册GridControl的ProcessGridKey事件:

gridControl1.ProcessGridKey += gridControl1_ProcessGridKey;
private void gridControl1_ProcessGridKey(object sender, KeyEventArgs e)
        {
            DevExpress.XtraGrid.Views.Base.ColumnView view = (sender as DevExpress.XtraGrid.GridControl).FocusedView as DevExpress.XtraGrid.Views.Base.ColumnView;
            if (view == null) return;
            if (e.KeyCode == Keys.Delete && e.Control && view.OptionsBehavior.AllowDeleteRows!= DevExpress.Utils.DefaultBoolean.False && view.SelectedRowsCount > 0)
            {
                if (DevExpress.XtraEditors.XtraMessageBox.Show($"确定删除所选{view.SelectedRowsCount}行?", "提问", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    view.DeleteSelectedRows();
            }

        }

效果图:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值