• 締切済み

C# DataGridView内での制御について

初めて投稿します。 C#のwindowsアプリを開発しています。 開発ツールはVS2010を使用しています。 datagridview内の制御について困っているので 知恵を貸してください。 datagridviewのEditModeをEditOnEnterに設定し、常に入力モードにしています。 また、CellValidatingを使用し、各セルの必須チェックなどのエラーチェックを おこなっています。 Enterキー押下でCellValidatingイベントが発生し、エラーチェックを行う ことには問題ないのですが、矢印キーやマウスでのセル移動時にも、 CellValidatingイベントが発生します。 矢印キーやマウスでの操作の場合はCellValidatingイベントを発生させずに したいのですが、どうすればよいのでしょうか? 知っている方がいれば、知恵を貸してください。

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { //変更がなければ何もしない if (e.FormattedValue == dataGridView1[e.RowIndex, e.ColumnIndex].FormattedValue) return; }

ishiguro0816
質問者

補足

ありがとうございます。 上記の方法でためしてみましたが、今度は、 空白のセルでEnterキーを押下したときにエラーが 発生しませんでした。 Enterキーではエラーチェックを行い、エラーがあればフォーカスを移動させない。 矢印キーではエラーのチェックを行わず、自由にセル内の移動が行えるようにしたいのです。 不可能なのでしょうか?

  • cotae_bb
  • ベストアンサー率53% (51/95)
回答No.1

CellValueChangedイベントで処理を行ってはどうでしょう?

ishiguro0816
質問者

補足

ありがとうございます。 CellValueChangedも考えたのですが、いくつか問題があり断念しました。 たとえば、空白のセルにフォーカスがあった状態で、 Enterキーを押下すると、空白はエラーにしないといけないのです。 CellValueChangedイベントだと、セルの内容が変わっていないので、 エラーにならないのです。 また、CellValidatingを選んだのは、エラーが発生した場合、e.Cancel = true を使用し、フォーカスを遷移させないようにするためです。 Enterキーを押下したときは、エラーチェックを行い、 矢印キーやマウス操作の場合はエラーチェックを行わないようにしたいのです。

関連するQ&A