私はあなたが本当に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);
}
編集:キーを押したときに新しい行を編集モードで開始したい場合、それはデータグリッドビューですでに利用可能な機能です。次のように手動で設定できます。
dgvList.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2;
//or
dgvList.EditMode = DataGridViewEditMode.EditOnKeystroke;
新しい行に対してのみキーダウン時にセルを編集モードにしたい場合は、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);
}