我不认为你真的需要使用该NewRowIndex
属性。只需通过设置当前单元格开始编辑:
private void dgvList_CellEnter(object sender, DataGridViewCellEventArgs e)
{
dgvList.CurrentCell = dgvList[e.ColumnIndex, e.RowIndex];
dgvList.BeginEdit(true);
}
如果您希望单元格仅针对新行进入编辑模式,则:
private void dgvList_CellEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex != dgvList.NewRowIndex)
return;
dgvList.CurrentCell = dgvList[e.ColumnIndex, e.RowIndex];
dgvList.BeginEdit(true);
}
编辑:如果您希望新行在 keydown 时开始处于编辑模式,那么这是 datagridviews 已经可用的功能。您可以像这样手动设置它:
dgvList.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2;
//or
dgvList.EditMode = DataGridViewEditMode.EditOnKeystroke;
如果您希望单元格仅在新行的 keydown 时处于编辑模式,那么您将不得不通过挂钩KeyDown
事件来覆盖默认行为,我认为这是执行 GUI 的一种不好的方式。可能是这样的:
初始化:dgvList.EditMode = DataGridViewEditMode.EditOnF2; //or whatever you prefer
在击键时覆盖默认的 excel 样式编辑。进而
private void dgvList_KeyDown(object sender, KeyEventArgs e)
{
if (dgvList.CurrentCell.RowIndex != dgvList.NewRowIndex)
return;
dgvList.BeginEdit(true);
}