- - PR -
意図しないClickEventが実行される・・・
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-02-10 14:36
当方環境は、VB.NETで開発を行っています。
OSはWindows2000になります。 2つの画面の行き来で意図しない動作が発生しますので、 状況を以下に記します。 @A画面からB画面をShowDialogで呼び出します AB画面にはグリッドがあり、そこにデータが一覧表示されています BB画面のグリッドのセルを1つダブルクリックすると B画面をクローズし、A画面に制御が戻ります 問題は、B画面でダブルクリックした後の動作です。 A画面には、シングルクリック(ClickEventハンドル)で動作する 一覧表示用グリッドがあります。 仮に、Bの『B画面でダブルクリック』の動作を、 下にある『A画面のグリッド』にあたる範囲内の位置で行うと、 B画面がクローズされたタイミングで A画面のグリッドのシングルクリック処理(ClickEvent)処理が走ってしまいます。 雰囲気としては、B画面で行ったダブルクリックの『クリックのバッファ』の ようなものが残り、その座標にあったA画面のClickEventが実行されているようです。 対応策として、キーボードバッファのようなものができれば・・・? と思ったのですが、解決できそうな方法をヒントでも構いませんので ご教授頂ければ、と思います。 | ||||
|
投稿日時: 2005-02-10 15:40
「グリッド」とは、DataGridコントロールのことでしょうか?
DataGridコントロールと仮定して実験してみましたが、再現しませんでした。 | ||||
|
投稿日時: 2005-02-10 15:55
情報不足でした。
申し訳ございません。 VB6.0から移行して使っていた為に、 FlexGrid(AxMSFlexGridLib.AxMSFlexGrid)を使用しています。 どうも、FlexGridのClickEventのみで発生するようです。 -----
[ メッセージ編集済み 編集者: 赤い水性 編集日時 2005-02-10 16:20 ] | ||||
|
投稿日時: 2005-02-10 16:40
MSFlexGridにしたら、現象を再現できました。
ただ、VB6.0で同様のコードを記述してみたところ、同じ現象が発生しました。 なので、VB.NET/VB6.0の相違ではなく、MSFlexGridの仕様(もしくは不具合)と考えられます。 よく観察してみると、BのDblClickはダブルクリックの2回目のMouseDownで発生し、AのClickEventはその後のMouseUpが伝播してしまっているようです。 (ダブルクリックの2回目を押しっぱなしにして、しばらくしてから放すと分かります) AのClickEventの処理をMouseDownEventに移動すると、回避できました。 (他との関係でこの移動が可能かどうかは分かりませんが) | ||||
|
投稿日時: 2005-02-10 17:24
大変有用な情報をありがとうございました。
確かにMouseDownEventではClickEventのような不具合は 発生しませんでした。 他の処理に影響はないかを確かめた上で、こちらのハンドルを 使用してみようと考えております。 |
1