如何在DataGridView中使用Enter键作为Tab键

我有一个5列的DataGridView 。 如果在第一列中按Enter键,焦点将移至下一行。 当我按下Enter键时,我想将焦点移到下一

  private void dgvComp_CellEnter(object sender, DataGridViewCellEventArgs e) { if (dgvComp.CurrentRow.Cells[e.ColumnIndex].ReadOnly) { SendKeys.Send("{tab}"); } } 

在上面的代码中,我将列2,3和4作为只读列。 如果按Tab键,焦点应直接转到第5列。

我怎样才能做到这一点?

你会试试这个解决方案吗?

 using System.Diagnostics; class MyDataGridView : DataGridView { protected override bool ProcessDialogKey(Keys keyData) { if (keyData == Keys.Enter) { base.ProcessTabKey(Keys.Tab); return true; } return base.ProcessDialogKey(keyData); } protected override bool ProcessDataGridViewKey(KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { base.ProcessTabKey(Keys.Tab); return true; } return base.ProcessDataGridViewKey(e); } } 

尝试使用KeyPress事件处理程序:

 private void dgvComp_KeyPress(object sender, KeyPressEventArgs e) { switch (e.KeyChar) { case (char)Keys.Enter: SendKeys.Send("{Tab}"); break; default: break; } } 
 datagridview.EditingControlsShowing += datagridview_EditingControls; datagridview_EditingControls(object sender,DataGridViewEditingControlShowingEventArgs e) { e.control.KeyDown += Control_KeyDown; } private void Control_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { dataGridView.CurrentCell = dataGridView.CurrentRow.Cells[e.ColumnIndex + 1]; } }