DataGridView:'无法从方法组转换为键

时间:2017-07-24 17:18:55

标签: c# datagridview eventhandler

我有一个带有datagridview的WinFormApp,我正在尝试编写一个方法,当你在所选行上按Enter键时会执行某些操作。 例如 - gridview显示我的数据库中的一些数据,它有4列,按照您喜欢的方式完成这些列的编辑后,按Enter键,数据将以新值保存在数据库中。 目前我在 Form1()

中有此功能
     dataGridView1.PreviewKeyDown += new PreviewKeyDownEventArgs(dataGridView1_PreviewKeyDown);

我不认为是正确的,方法是这样的:

void dataGridView1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            // do something
        }
    }

我对编程很新,所以一个很好的解释将非常感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用CellValueChanged事件?如果您有更新数据库的代码,则应自动执行此操作。

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        MessageBox.Show("Test if works"); //it works
    }

编辑 -

或者,如果您希望它仅在选定的行/列中按下输入时执行命令,则可以使用类似

的内容
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        if(e.ColumnIndex == 1)
           {
               MessageBox.Show("Test if works"); //it works
           }
    }

答案 1 :(得分:0)

这里,dgv是DatawGridView的一个对象,此事件仅在用户时触发 改变单元格的内容。这意味着,如果一个单元格为值'abc'并且用户在同一单元格中重新输入'abc',则不会触发此事件。同样,如果编辑后的用户点击键盘上的“Escape”键,那么也不会触发此事件。这意味着,在编辑之后,如果用户在键盘上点击“Enter / Return”键,则会触发此事件,前提是旧值和新值不同。

private void dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    //code to save your changed data
}