2008年11月02日
川俣晶の縁側ソフトウェア技術雑記total 3305 count

表示と非表示を繰り返すコントロールに対するClickイベントは消失することがある

Written By: 川俣 晶連絡先

 C# 3.0のWindowアプリケーションを書いている時に遭遇した問題に関するメモ。

 フォーム上にコントロールを作成し、タイマーでvisibleプロパティを定期的にオンオフしているとします。コントロールとフォームの双方にClickイベントを設定しているとします。ここで、実際にマウスを用いてクリックを行うと、(ダブルクリックと認識される2回連続操作を行わない限り)、フォームかコントロールのどちらかのイベントが確実に実行されるかのように思えます。

 しかし、実際にはイベントが実行されないケースがあります。

 おそらく、コントロール上でマウスダウンが認識された後、それがクリックであると認識されるまでの間にコントロールが非表示になると、マウスボタンが押された事実が行き場を失って消失してしまうと思われます。

VB6でも同じだった §

 .NET Framework固有の現象かと思いきや。VB6で軽くテストプログラムを作成してみると同じ現象が起こりました。昔からある問題のようです。

解決策 §

 MouseDownイベントを使えば確実にマウスボタンが押されたことをキャッチできます。

 もちろん、それを使うとクリックとダブルクリックの使い分け等はできませんが。

 以上、時間がないのでメモのみ。検証ソース等は割愛。

Facebook

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20081102174525
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.