我有一个带有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
}
}
我对编程很新,所以一个很好的解释将非常感激。
谢谢!
答案 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
}