- - PR -
ボタンの二度押し防止について
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-04-12 19:13
いつもお世話になっております。 現在、VB.net2003にてWindowsアプリケーションの開発を行っております。 さっそくの質問なのですが、 ボタンの二度押しを防止する方法をご教授いただけないでしょうか? (※以下の方法以外にあれば) よろしくお願いいたします。 1.ボタンをDisable→Do Events→Enableボタン (上記の方法だと、Disable時にFocusが遷移してしまう。 後で戻すことも出来るが遷移先のコントロール等で LostFocusイベント等が発生する。) 2.フックにてどうにかする。 (※出来るものなのかを、調査中でした。) 3.メッセージキューをどうにか・・・。 | ||||||||||||
|
投稿日時: 2007-04-12 19:16
オーソドックスかどうかは自信がありませんが、
privateな変数を一つ用意してフラグとして利用するというのはどうでしょう。 Private buttonClicked As Boolean = False と記述してあるとして、イベントの頭で
としてしまうとか。 | ||||||||||||
|
投稿日時: 2007-04-12 19:55
さっそくのご返答ありがとうございます。
上記の方法ですが、 当該フラグを戻すタイミングはどうなるのでしょうか? | ||||||||||||
|
投稿日時: 2007-04-12 20:02
イベントの最後でいいのでは?(イベントを抜けるまでは押させたくないのですよね?) | ||||||||||||
|
投稿日時: 2007-04-12 20:05
上記の方法だと、結果的にメッセージキューに溜まっているものが 1回目のイベント後に順次流れてしまうので、 二回実行されてしまうような気がするのですが。。。 | ||||||||||||
|
投稿日時: 2007-04-12 20:26
ご自身の最初の投稿に解決策あるじゃないですか。 考え方は1.の方法で。 | ||||||||||||
|
投稿日時: 2007-04-12 20:28
#常用言語が違うので外しているかもしれませんが・・
ん?Do Eventsは書かないということでしょうか? 私自身はDisable→処理→Enableだけで、Do Eventsを書くことは滅多にないので(汗 (追記) あ、よねKENさんと被った・・ [ メッセージ編集済み 編集者: shimix 編集日時 2007-04-12 20:29 ] | ||||||||||||
|
投稿日時: 2007-04-12 20:37
ご返信ありがとうございます。
Do Eventsを書くこと事態を問題視はしておりません。 冒頭の質問でも指摘しているのですが、 上記方法ではDisable時にフォーカスが他のコントロールに遷移してしまいませんか? 他のコントロールにフォーカスが遷移してしまいますと、GetFocus、LostFocus等のイベントが流れてしまうので、懸念しております。 |