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

42 篇文章 15 订阅
14 篇文章 6 订阅

关于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();
            }

        }

效果图:

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值