繁体   English   中英

在datagridview上禁用Tab键

[英]Disable Tab key on datagridview

我正在尝试从datagridview禁用Tab键,也要在其上创建我自己的事件。 同样,如果可以禁用上,下,右,左并输入键。 OnLoad事件

this.dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;

在KeyDownEvent上

 private void gridInvoice_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Tab)
        {
            //SelectNextControl(dataGridView1, true, true, true, true);
            // or Parent.SelectNextControl() if the grid is an only child, etc.
            e.Handled = true;
        }

    }

使用Tab键上方的代码可以正常工作。 我移到下一个单元。 我该如何预防呢?

您必须使用PreviewKeyDown事件而不是KeyDown。

根据Microsoft Control.PreviewKeyDown事件描述

某些控件通常会忽略某些键(例如TAB,RETURN,ESC和箭头键),因为它们不被视为输入键。

如果要在按下Tab键时使用KeyDown事件,则需要在PreviewKeyDown事件中插入以下代码。

if (e.KeyCode == Keys.Tab) { e.IsInputKey = true; }

在编辑模式下感谢Jimi

对不起,我认为问题太简单了。 这个怎么样。 当您处于DGV的编辑模式时,可以覆盖ProcessCmdKey以忽略Tab。 太残酷了吗? 我认为这比制作新的编辑控件要简单,但也不是优雅。

    protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
    {
        if (keyData == Keys.Tab && dataGridView1.EditingControl != null) { return true; }
        else return base.ProcessCmdKey(ref msg, keyData);
    }

来自类似问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM