无情老表

winfrom dataGridView监听

电脑版发表于:2021/8/4 16:18

前言

每当单元格处于编辑模式时,其托管控件正在接收KeyDown事件,而不是DataGridView包含它的父项。这就是为什么当某个单元格不处于编辑模式时(即使它被选中),因为你的DataGridView控件本身接收到该KeyDown事件,所以你的键盘快捷键可以正常工作。但是,当你处于编辑模式时,单元格包含的编辑控件正在接收事件,并且没有发生任何事情,因为它没有附加自定义处理程序例程。

我花了太多时间调整标准DataGridView控件来按照我希望的方式处理编辑提交,并且我发现解决这种现象的最简单方法是对现有DataGridView控件进行子类化并覆盖其ProcessCmdKey功能。不论DataGridView是否处于编辑模式,无论你在此处放入的自定义代码是何时按下按键,都将运行。

具体代码如下

class MyDataGridView : System.Windows.Forms.DataGridView{
    protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
    {

        MessageBox.Show("Key Press Detected");

        if ((keyData == (Keys.Alt | Keys.S)))
        {
            //Save data
        }

        return base.ProcessCmdKey(ref msg, keyData);
    }}


关于TNBLOG
TNBLOG,技术分享
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢