我不认为你真的需要利用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处于编辑模式时,那么这是一个已经可用于datagridview的功能。您可以手动设置它像这样:
dgvList.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2;
//or
dgvList.EditMode = DataGridViewEditMode.EditOnKeystroke;
如果你想在KEYDOWN仅适用于新行的单元格是在编辑模式下,那么你将不得不覆盖默认行为,通过挂钩KeyDown
事件,我相信在做图形用户界面时是一种不好的方法可能是这样的:
初始化:dgvList.EditMode = DataGridViewEditMode.EditOnF2; //or whatever you prefer
覆盖默认擅长于按键风格编辑。然后
private void dgvList_KeyDown(object sender, KeyEventArgs e)
{
if (dgvList.CurrentCell.RowIndex != dgvList.NewRowIndex)
return;
dgvList.BeginEdit(true);
}
为什么你首先处理newrowindex?只要将新行视为正常行并正在编辑 – nawfal
将新行视为正常行意味着什么?我正在处理newrowindex,因为只有当用户输入新行时,编辑模式才会被触发。你可能会发布一些代码来显示你的意思。谢谢! (ps。就像在Excel中一样 - 如果按Enter键,光标跳到下一行,并且如果您开始写入单元格进入编辑模式) – FreewareFire
我已经发布了代码,请参阅我的第二个代码块。在excel中,如果按下输入游标只跳转到下一行,它不会使单元处于编辑模式。只有当你开始输入时才会变成编辑模式。所以你不需要使用dgv输入事件.. – nawfal