私はwinformにDataGridView(DGV)コントロールを持っています。 DGVには4つの列があります。最初の2列はCombobox型で、残りの2列はTextbox型です。任意のセルでEnterキーを押すと、次のセルに移動します。最後のセルがEnterキーを押している間に新しい行が作成され、フォーカスは、2番目の行の最初の列に移動します。そして、私はそれが常にそのように動作するようにしたい。私の問題は、 'Enable Editing' = trueを設定すると始まります。最初の列、不要な新規行が作成されます。この時点で新しい行を作成する必要はありません。これを避ける方法をアドバイスしてください。DataGridViewで不必要な行の作成を中止します。
private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Enter)
{
int col = dataGridView1.CurrentCell.ColumnIndex;
int row = dataGridView1.CurrentCell.RowIndex;
if (col < dataGridView1.ColumnCount - 1)
{
col++;
}
else
{
col = 0;
row++;
}
if (row == dataGridView1.RowCount)
dataGridView1.Rows.Add();
dataGridView1.CurrentCell = dataGridView1[col, row];
e.Handled = true;
}
}
_「最初の列のコンボボックスから項目を選択すると、不要な新しい行が作成されます。」_新しい行を作成しているコードを投稿した関数はありますか?その場合は、ブレークポイントを使用して呼び出しスタックをチェックして、何がトリガーされているのかを確認します。 –
実際にはそうではありません。上のコードは、Enterキーを押すと列から列にカーソルを移動し、最後の列は有効な新しい行を作成します –
はい、新しい行が作成されます。したがって、新しい行を作成していない場合は、別の場所を探す必要があります。 –