我有一个datagridview,现在我的要求是当用户编辑单元格并单击enter或tabg键时,新的单元格值应该更新到数据库中,我能够将新值更新到数据库中,我已经在datagridview的keyup事件中编写了我的代码,现在在keyup事件中,当用户按下回车键时,控件正在移动到下一行,所以即时获取行索引值为actualrowindex + 1,当我点击tab时键,控件正在移动下一列,所以我将列索引作为columnindex + 1,我如何处理这些事件o当我点击enetr或tab键时得到精确的列索引或rowindex?..下面是teh事件in我写了我的代码..
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
}
答案 0 :(得分:2)
当用户有许多其他方式提交对单元格值的更改时,处理Enter键和Tab键是没有意义的。例如,他们可以单击另一个单元格。据推测,当他们执行其他一些操作时,您希望更新数据库,而不仅仅是在按下某些键时。
因此,不要处理KeyUp
事件,而是处理CellValueChanged
事件。每当用户提交对单元格值的更改时,就会引发此事件,这通常在焦点离开单元格时发生。
正如您所指出的那样,按Enter键会使焦点移动到列中的下一个单元格,而Tab会使焦点移动到行中的下一个单元格,因此在您的情况下这将正常工作。当用户使用鼠标单击另一个单元格,或者使用箭头键或任何其他提交更改的方法移动到另一个单元格时,它也会起作用。
处理此事件时,您将始终获得更改的单元格的正确行索引和列索引。此信息包含在作为e
参数传递给事件处理程序方法的DataGridViewCellEventArgs
对象中。