【问题标题】:keyup event in datagridview?datagridview中的keyup事件?
【发布时间】:2013-03-19 04:10:08
【问题描述】:

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

    private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
    {


    }

【问题讨论】:

    标签: c# datagridview keypress


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 你说的是对的,我也试过了,但问题是如果用户对单元格进行了更改但他不想保存它,如果他离开单元格,值会更新到数据库,他可能也没有意识到这一点?
    • 当然,但没有办法阻止这种情况,除非您每次离开单元格时询问他们是否要提交该值。因为这会令人无法接受,所以您唯一的其他选择是添加一个“保存更改”按钮,该按钮仅在用户单击它时才将更新提交到数据库。
    • 你能告诉我们如何在单击保存按钮时只保存从 datagridview 编辑到数据库的单元格值,我觉得这是最好的选择吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多