- 締切済み
C# DataGridView内での制御について
初めて投稿します。 C#のwindowsアプリを開発しています。 開発ツールはVS2010を使用しています。 datagridview内の制御について困っているので 知恵を貸してください。 datagridviewのEditModeをEditOnEnterに設定し、常に入力モードにしています。 また、CellValidatingを使用し、各セルの必須チェックなどのエラーチェックを おこなっています。 Enterキー押下でCellValidatingイベントが発生し、エラーチェックを行う ことには問題ないのですが、矢印キーやマウスでのセル移動時にも、 CellValidatingイベントが発生します。 矢印キーやマウスでの操作の場合はCellValidatingイベントを発生させずに したいのですが、どうすればよいのでしょうか? 知っている方がいれば、知恵を貸してください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- todo36
- ベストアンサー率58% (728/1234)
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { //変更がなければ何もしない if (e.FormattedValue == dataGridView1[e.RowIndex, e.ColumnIndex].FormattedValue) return; }
- cotae_bb
- ベストアンサー率53% (51/95)
CellValueChangedイベントで処理を行ってはどうでしょう?
補足
ありがとうございます。 CellValueChangedも考えたのですが、いくつか問題があり断念しました。 たとえば、空白のセルにフォーカスがあった状態で、 Enterキーを押下すると、空白はエラーにしないといけないのです。 CellValueChangedイベントだと、セルの内容が変わっていないので、 エラーにならないのです。 また、CellValidatingを選んだのは、エラーが発生した場合、e.Cancel = true を使用し、フォーカスを遷移させないようにするためです。 Enterキーを押下したときは、エラーチェックを行い、 矢印キーやマウス操作の場合はエラーチェックを行わないようにしたいのです。
補足
ありがとうございます。 上記の方法でためしてみましたが、今度は、 空白のセルでEnterキーを押下したときにエラーが 発生しませんでした。 Enterキーではエラーチェックを行い、エラーがあればフォーカスを移動させない。 矢印キーではエラーのチェックを行わず、自由にセル内の移動が行えるようにしたいのです。 不可能なのでしょうか?