2

セルを編集モードに設定しようとしています。セルは新しい行(NewRowIndex)にあります。他の場所ではうまく機能しますが、NewRowIndexで編集モードを設定しようとすると、想定どおりに編集モードになりません。ユーザーが新しい行(NewRowIndex)を入力すると、最初のセルが編集モードになります。私は(RowEnterで)試しました:

dgvList.CurrentCell = dgvList["myColName", dgvList.NewRowIndex]; dgvList.BeginEdit(true);

ありがとうございました!

4

1 に答える 1

3

私はあなたが本当に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);
}
于 2012-10-27T10:14:06.363 に答える