実現したいこと
DataGridViewで入力用の列があり、常に編集モードにしています。
通常はEnterで下の行に移動していいのですが、
一番下の行でEnterした時に入力中のDataGridViewの表示データを変えて
次のデータの一番上の行の入力から始められるようにしたいと思っています。
(例)
[№]、[名称]、[入力項目] の3列がある
データAを表示中
A-001、名称、入力項目
A-002、名称、入力項目
A-003、名称、入力項目 ←ここの入力項目でEnterを押したら
データ表示を切り替え
B-001、名称、入力項目 ←ここにフォーカスを当てたい
B-002、名称、入力項目
B-003、名称、入力項目
質問
DataGridviewのPreviewKeyDownイベントで入力行が最終行だったら次のデータ表示への切り替えを呼び出し、
DataGridView.CurrentCell = DataGridView[2,0] として一番上の行を選択していますが、
PreviewKeyDownのEnterで下の行に移動する標準の処理があるため
データ表示が切り替わるときに一番上のセルを指定してもその後に1行下のセルにフォーカスが移動してしまいます。
PreviewKeyDownのEnter時にセルが移動する処理を止める方法、
またはEnterでのセル移動より後にセル指定をできるイベントがあれば知りたいです。
(DataGridViewのEditModeプロパティをEditOnEnterにして常に編集モードにしているため、
KeyDownイベントは使用しておりませんが、KeyDownイベントを使う方法でも希望の動作ができれば大丈夫です。)
よろしくお願いします。
6/28追記
極端な話をすると、データ表示の切替関係なく、
C#
1private void dataGridView2_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) 2{ 3 dataGridView2.CurrentCell = dataGridView2[2,0] 4 e.IsInputKey = true; 5}
この処理でもフォーカスが2行目に渡されてしまいます。
e.IsInputKey = true; でセル移動がキャンセルできていないようです。
回答2件
あなたの回答
tips
プレビュー