C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: 「CellValidating」イベントについ


(過去ログ 34 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■17121 / inTopicNo.1)  「CellValidating」イベントについてご質問
  
□投稿者/ ランペル (4回)-(2008/04/17(Thu) 10:48:29)

分類:[.NET 全般] 

「DataGridView」オブジェクトの「CellValidating」イベントについて、マウスのホイール操作時にイベントが実行されてしまい困っています。
マウスのホイール時は、セルからフォーカスが離れるわけではないので、「CellValidating」イベントに実装している入力チェックを実行しないように制御したいのですが、
可能でしょうか。

*「CellValidating」では、入力された文字のフォーマットチェック等を実施しています。
引用返信 編集キー/
■17125 / inTopicNo.2)  Re[1]: 「CellValidating」イベントについてご質問
□投稿者/ ネタ好き (103回)-(2008/04/17(Thu) 13:25:43)
No17121 (ランペル さん) に返信
マウスホイールイベントを取得して、フラグを立てて、CellValidatingイベントでは、
そのフラグが立っていない事を確認して検証を行うとよいでしょう。
もちろん、フラグを下げるのを忘れないようにしましょう。
引用返信 編集キー/
■17136 / inTopicNo.3)  Re[2]: 「CellValidating」イベントについてご質問
□投稿者/ ランペル (6回)-(2008/04/17(Thu) 17:21:02)
No17125 (ネタ好き さん) に返信
> ■No17121 (ランペル さん) に返信
> マウスホイールイベントを取得して、フラグを立てて、CellValidatingイベントでは、
> そのフラグが立っていない事を確認して検証を行うとよいでしょう。
> もちろん、フラグを下げるのを忘れないようにしましょう。

マウスホイールされた場合のイベントは「DataGridView」オブジェクトには見当たらないのですが、どれを使用すればいいのでしょうか?

引用返信 編集キー/
■17137 / inTopicNo.4)  Re[1]: 「CellValidating」イベントについてご質問
□投稿者/ まどか (506回)-(2008/04/17(Thu) 17:51:24)
No17121 (ランペル さん) に返信
> マウスのホイール時は、セルからフォーカスが離れるわけではないので、

MSDNにはCellValidatingのトップに「セルが入力フォーカスを失い」と明記されていますが。

Data系をほとんど扱ったことが無いので逆に質問ですが
1.MSDNがうそをついている。
2.フォーカスが失われないにもかかわらず発生する。>DataGridViewのバグ
3.実はイベント発生の根拠と挙動は正しい。
のどれでしょうか?


ちなみにホイール検知については、WndProcとWM_MOUSEWHEELもしくはWM_HSCROLL、WM_VSCROLLあたりを。
#DataGridViewの継承コントロールにしなければいけませんが。
引用返信 編集キー/
■17147 / inTopicNo.5)  Re[2]: 「CellValidating」イベントについてご質問
□投稿者/ ランペル (7回)-(2008/04/17(Thu) 20:02:27)
No17137 (まどか さん) に返信
> ■No17121 (ランペル さん) に返信
>>マウスのホイール時は、セルからフォーカスが離れるわけではないので、
>
> MSDNにはCellValidatingのトップに「セルが入力フォーカスを失い」と明記されていますが。
>
> Data系をほとんど扱ったことが無いので逆に質問ですが
> 1.MSDNがうそをついている。
> 2.フォーカスが失われないにもかかわらず発生する。>DataGridViewのバグ
> 3.実はイベント発生の根拠と挙動は正しい。
> のどれでしょうか?
>
>
> ちなみにホイール検知については、WndProcとWM_MOUSEWHEELもしくはWM_HSCROLL、WM_VSCROLLあたりを。
> #DataGridViewの継承コントロールにしなければいけませんが。

「セルが入力フォーカスを失い」だけでは、どれが正しい仕様かは私には分かりません。
ただし、スクロールバーを移動した場合にはValidatingは実行されなかったり、
イベントの発行タイミングで困ったことは多いです。
操作によってはValidating実行前にEdintEndイベントが発行されたこともありました。

ホイール検知、結構難しそうですね…。実装の仕方がわからなければ
また聞きますので、どうぞよろしくお願いいたします。




引用返信 編集キー/
■17151 / inTopicNo.6)  Re[3]: 「CellValidating」イベントについ
□投稿者/ ネタ好き (106回)-(2008/04/17(Thu) 23:20:18)
2008/04/17(Thu) 23:25:50 編集(投稿者)

No17147 (ランペル さん) に返信
勘で思ったんだけど、ランペルさんはもしかして、オリジナルCellの開発していない?
私がオリジナルCell開発した時直面した問題に似ているんだよね。
そうならば、まどかさんが言った「セルが入力フォーカスを失い」の部分がかなり重要となるよ。
メソッドをオーバーライドして、フォーマット処理するときに、フォーカスが遷移しないように厳重に注意しよう。
それと、オリジナルCellの開発ならば、マウスホイールは案外簡単です。
というのも、ControlクラスにMouseWheelイベントがあるから、Cell上にオリジナルコントロールを載せればよいだけの事。
あと注意しなくてはならないのは、オリジナルCellやColumnを定義する際のオーバーロードするべきメソッドとプロパティの定義。
これはMSDNを一字一句慎重に読みましょう。
DataGridViewは仕様が複雑なので、これはかなり注意が必要。
セルが意外な場所で初期化されたり、色々な落とし穴がある。
とにかくMSDNをじっくり見て、注意深くひとつひとつテストしながら実装していこう。
でも、あまりDataGridViewの拡張はお勧めしない。
難しいから時間に制約がある場合は、市販のコントロールなどのソフト部品を買ったほうがいいですよ。
引用返信 編集キー/
■17172 / inTopicNo.7)  Re[4]: 「CellValidating」イベントについ
□投稿者/ ランペル (8回)-(2008/04/18(Fri) 11:03:54)
No17151 (ネタ好き さん) に返信
> 2008/04/17(Thu) 23:25:50 編集(投稿者)
>
> ■No17147 (ランペル さん) に返信
> 勘で思ったんだけど、ランペルさんはもしかして、オリジナルCellの開発していない?
> 私がオリジナルCell開発した時直面した問題に似ているんだよね。
> そうならば、まどかさんが言った「セルが入力フォーカスを失い」の部分がかなり重要となるよ。
> メソッドをオーバーライドして、フォーマット処理するときに、フォーカスが遷移しないように厳重に注意しよう。
> それと、オリジナルCellの開発ならば、マウスホイールは案外簡単です。
> というのも、ControlクラスにMouseWheelイベントがあるから、Cell上にオリジナルコントロールを載せればよいだけの事。
> あと注意しなくてはならないのは、オリジナルCellやColumnを定義する際のオーバーロードするべきメソッドとプロパティの定義。
> これはMSDNを一字一句慎重に読みましょう。
> DataGridViewは仕様が複雑なので、これはかなり注意が必要。
> セルが意外な場所で初期化されたり、色々な落とし穴がある。
> とにかくMSDNをじっくり見て、注意深くひとつひとつテストしながら実装していこう。
> でも、あまりDataGridViewの拡張はお勧めしない。
> 難しいから時間に制約がある場合は、市販のコントロールなどのソフト部品を買ったほうがいいですよ。

今回は、デフォルトで用意されているDataGridViewを使用しており、拡張等はおこなっておりません。
他にも注意点等、ご存知であれば教えていただきたいです。
DataGridVeiwのイベント関係での不具合がかなり出ており、他にも想定しないところでValidatingが実行されないか、不安です。







引用返信 編集キー/
■17214 / inTopicNo.8)  Re[5]: 「CellValidating」イベントについ
□投稿者/ ランペル (9回)-(2008/04/18(Fri) 17:55:09)
No17172 (ランペル さん) に返信
> ■No17151 (ネタ好き さん) に返信
>>2008/04/17(Thu) 23:25:50 編集(投稿者)
>>
>>■No17147 (ランペル さん) に返信
>>勘で思ったんだけど、ランペルさんはもしかして、オリジナルCellの開発していない?
>>私がオリジナルCell開発した時直面した問題に似ているんだよね。
>>そうならば、まどかさんが言った「セルが入力フォーカスを失い」の部分がかなり重要となるよ。
>>メソッドをオーバーライドして、フォーマット処理するときに、フォーカスが遷移しないように厳重に注意しよう。
>>それと、オリジナルCellの開発ならば、マウスホイールは案外簡単です。
>>というのも、ControlクラスにMouseWheelイベントがあるから、Cell上にオリジナルコントロールを載せればよいだけの事。
>>あと注意しなくてはならないのは、オリジナルCellやColumnを定義する際のオーバーロードするべきメソッドとプロパティの定義。
>>これはMSDNを一字一句慎重に読みましょう。
>>DataGridViewは仕様が複雑なので、これはかなり注意が必要。
>>セルが意外な場所で初期化されたり、色々な落とし穴がある。
>>とにかくMSDNをじっくり見て、注意深くひとつひとつテストしながら実装していこう。
>>でも、あまりDataGridViewの拡張はお勧めしない。
>>難しいから時間に制約がある場合は、市販のコントロールなどのソフト部品を買ったほうがいいですよ。
>
> 今回は、デフォルトで用意されているDataGridViewを使用しており、拡張等はおこなっておりません。
> 他にも注意点等、ご存知であれば教えていただきたいです。
> DataGridVeiwのイベント関係での不具合がかなり出ており、他にも想定しないところでValidatingが実行されないか、不安です。

今回の質問の件ですが、現在のマイクロソフトの仕様にあわせて、マウスホイール時にも検証チェックをおこなうこととしました。
ご対応有難う御座いました。



解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -