dポイントプレゼントキャンペーン実施中!

初めて投稿します。
C#のwindowsアプリを開発しています。
開発ツールはVS2010を使用しています。

datagridview内の制御について困っているので
知恵を貸してください。

datagridviewのEditModeをEditOnEnterに設定し、常に入力モードにしています。
また、CellValidatingを使用し、各セルの必須チェックなどのエラーチェックを
おこなっています。

Enterキー押下でCellValidatingイベントが発生し、エラーチェックを行う
ことには問題ないのですが、矢印キーやマウスでのセル移動時にも、
CellValidatingイベントが発生します。
矢印キーやマウスでの操作の場合はCellValidatingイベントを発生させずに
したいのですが、どうすればよいのでしょうか?

知っている方がいれば、知恵を貸してください。

A 回答 (2件)

private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)


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

この回答への補足

ありがとうございます。

上記の方法でためしてみましたが、今度は、
空白のセルでEnterキーを押下したときにエラーが
発生しませんでした。

Enterキーではエラーチェックを行い、エラーがあればフォーカスを移動させない。
矢印キーではエラーのチェックを行わず、自由にセル内の移動が行えるようにしたいのです。

不可能なのでしょうか?

補足日時:2011/04/21 16:45
    • good
    • 0

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

この回答への補足

ありがとうございます。

CellValueChangedも考えたのですが、いくつか問題があり断念しました。

たとえば、空白のセルにフォーカスがあった状態で、
Enterキーを押下すると、空白はエラーにしないといけないのです。
CellValueChangedイベントだと、セルの内容が変わっていないので、
エラーにならないのです。
また、CellValidatingを選んだのは、エラーが発生した場合、e.Cancel = true
を使用し、フォーカスを遷移させないようにするためです。

Enterキーを押下したときは、エラーチェックを行い、
矢印キーやマウス操作の場合はエラーチェックを行わないようにしたいのです。

補足日時:2011/04/20 18:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!