This modified version also adds a new row automatically and hops back to the first column after an enter given in the last column a row higher:
| |
public class DataGridViewEnter : DataGridView { protected override bool ProcessDialogKey(Keys keyData) { Keys key = (keyData & Keys.KeyCode); if (key == Keys.Enter) { return this.ProcessRightKey(keyData); } return base.ProcessDialogKey(keyData); } public new bool ProcessRightKey(Keys keyData) { Keys key = (keyData & Keys.KeyCode); if (key == Keys.Enter) { if ((base.CurrentCell.ColumnIndex == (base.ColumnCount - 1)) && (base.CurrentCell.RowIndex == (base.RowCount - 1))) { ((BindingSource)base.DataSource).AddNew(); base.CurrentCell = base.Rows[base.RowCount - 1].Cells[0]; return true; } if ((base.CurrentCell.ColumnIndex == (base.ColumnCount - 1)) && (base.CurrentCell.RowIndex + 1 != base.NewRowIndex)) { base.CurrentCell = base.Rows[base.CurrentCell.RowIndex + 1].Cells[0]; return true; } return base.ProcessRightKey(keyData); } return base.ProcessRightKey(keyData); } protected override bool ProcessDataGridViewKey(KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { return this.ProcessRightKey(e.KeyData); } return base.ProcessDataGridViewKey(e); }
|
Hope you guys find it usefull.
Cheers,
Paul