我正在winforms应用程序中为我的DataGridView创建一个自定义编辑控件,我想在用户点击回车键时,但在datagridview滚动到下一行之前引发一个事件。我不关心事件是由单元格引起的,还是编辑控件,因为我可以根据需要传播事件。到目前为止,我已经尝试覆盖我继承的DataGridViewTextBoxCell类的OnKeyDown和OnKeyUp方法,如果单元格处于编辑模式,似乎都不会调用这些方法。我还尝试在编辑控件中处理TextBox控件的KeyDown事件。这个被调用,但只有在DataGridView已经滚动到下一行之后才会发生(我需要在滚动之前引发事件)。有任何想法吗?在此先感谢您的帮助。
答案 0 :(得分:2)
如果您要创建自定义DataGridView
控件,则可以覆盖ProcessCmdKey
类中的DataGridView
事件。
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
int ColumnIndex = dataGridView1.CurrentCell.ColumnIndex;
int RowIndex = dataGridView1.CurrentCell.RowIndex;
if (keyData == Keys.Return || keyData == Keys.Enter)
{
if (ColumnIndex == dataGridView1.Columns.Count - 1)
{
dataGridView1.Rows.Add();
dataGridView1.CurrentCell = dataGridView1.Rows[RowIndex].Cells[0];
}
else
dataGridView1.CurrentCell = dataGridView1.Rows[RowIndex].Cells[RowIndex];
return true;
}
else
return base.ProcessCmdKey(ref msg, keyData);
}
}