0

我有一个datagridview,现在我的要求是当用户编辑单元格并单击回车键或tabg键时,新的单元格值应该更新到数据库中,我能够将新值更新到数据库中,我已经写了我在datagridview的keyup事件中的代码,现在在keyup事件中,当用户按下回车键时,控件移动到下一行,所以我将行索引值作为actualrowindex + 1,当我点击tab键时,控件正在移动下一列,所以我将列索引作为 columnindex+1,当我单击 enetr 或 tab 键时,我如何处理这些事件以获得确切的列索引或 rowindex?..下面是我写的事件我的代码..

    private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
    {


    }
4

1 回答 1

2

当用户有很多其他方法可以提交对单元格值的更改时,处理 Enter 和 Tab 键是没有意义的。例如,他们可以单击另一个单元格。大概您希望在他们执行这些其他操作之一时更新数据库,而不仅仅是在他们按下某些键时。

因此,与其处理KeyUp事件,不如处理CellValueChanged事件。每当用户提交对单元格值所做的更改时都会引发此事件,这通常发生在焦点离开单元格时。

正如您所指出的,按 Enter 会导致焦点转移到列中的下一个单元格,而 Tab 会导致焦点转移到行中的下一个单元格,因此这在您的情况下可以正常工作。当用户使用鼠标单击另一个单元格,或者使用箭头键移动到另一个单元格时,它也可以工作,或者任何其他提交更改的方法。

处理此事件时,您将始终获得更改单元格的正确行索引和列索引。此信息包含在DataGridViewCellEventArgs作为e参数传递给事件处理程序方法的对象中。

于 2013-03-19T04:18:38.367 回答