Winforms DataGridView自定义编辑控件/单元格

时间:2014-07-11 13:57:53

标签: .net winforms datagridview custom-controls

我正在winforms应用程序中为我的DataGridView创建一个自定义编辑控件,我想在用户点击回车键时,但在datagridview滚动到下一行之前引发一个事件。我不关心事件是由单元格引起的,还是编辑控件,因为我可以根据需要传播事件。到目前为止,我已经尝试覆盖我继承的DataGridViewTextBoxCell类的OnKeyDown和OnKeyUp方法,如果单元格处于编辑模式,似乎都不会调用这些方法。我还尝试在编辑控件中处理TextBox控件的KeyDown事件。这个被调用,但只有在DataGridView已经滚动到下一行之后才会发生(我需要在滚动之前引发事件)。有任何想法吗?在此先感谢您的帮助。

1 个答案:

答案 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);
    }
}