检测datagridview中的导航键按下

问题描述 投票:0回答:3

我尝试使用 datagridview 的按键事件,但它不起作用。如何检测 datagridview 中的上下左右箭头键按下情况?

c# visual-studio-2010 datagridview
3个回答
1
投票

尝试使用

KeyDown
事件:

private void dgv1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
    {
         //do stuff
    }
}

0
投票

可以用

PreviewKeyDown
:

public Form1()
{
    InitializeComponent();

    dgv.Columns.Add(new DataGridViewTextBoxColumn());

    dgv.Rows.Add("text");

    dgv.PreviewKeyDown += (sender, args) =>
    {
        Debug.Print(args.KeyCode.ToString());
    };
}

0
投票

您无法捕获箭头键,因为它们是由消耗事件的

ProcessKeyPreview
DataGridView
方法处理的。 如果您想手动处理这些,您需要扩展
DataGridView
并覆盖该方法。

或者,您也可以侦听

EditingControlShowing
事件,然后将
PreviewKeyDown
事件侦听器添加到 EditingControl,如下所示

this.dataGridView.EditingControlShowing += (sender, eventArgs) =>
{
    if (e.Control is DataGridViewTextBoxEditingControl editingControl)
    {
        editingControl.PreviewKeyDown += (o, args) =>
        {
            // Handle arrow event
        };
    }
};

但这样我认为你无法阻止事件的传播

© www.soinside.com 2019 - 2024. All rights reserved.