こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

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

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

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

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

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

投稿日時 - 2011-04-20 16:39:07

QNo.6681677

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

投稿日時 - 2011-04-20 18:04:11

補足

ありがとうございます。

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

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

不可能なのでしょうか?

投稿日時 - 2011-04-21 16:45:41

ANo.1

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

投稿日時 - 2011-04-20 17:05:35

補足

ありがとうございます。

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

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

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

投稿日時 - 2011-04-20 18:06:03

あなたにオススメの質問