人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VB6のTreeViewで、Nodeをクリックしたら、ある動作をさせたいのですが、ダブルクリックのときにも、クリックイベントが起きてしまいます。クリックのときだけ指定の動作をさせるにはどうしたらよいか、ご存知でしたら教えてください。

●質問者: bigeye
●カテゴリ:コンピュータ
✍キーワード:vb6 イベント クリック ダブルクリック
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● ke_ishi
●15ポイント

http://dobon.net/vb/dotnet/control/doubleclickevent.html

ダブルクリックした時のキーイベントの発生する順番: .NET Tips: C#, VB.NET, Visual Studio

イベント判定の順序を再確認してみてください

◎質問者からの返答

ありがとうございます。

でも、これはもしかしてVB.NETのこと?

私方は、単純にVB6で、TreeViewのItemClickイベントに記述したコードが、ダブルクリックしたときにも動いてしまうので、それを回避したいだけなんですけど、結局どうしたらよいかわかりません。


2 ● きゃづみぃ
●15ポイント

http://www.hatena.ne.jp/awindow?

クリックとダブルクリックを区別するには

TreeView1_Click

TreeView1_DblClick

で区別するしかないでしょう。

それで、Nodeをクリックされたかを知るには

TreeView1_NodeClick

で フラグを立てます。

そのあと

TreeView1_Click

TreeView1_DblClick

に きますので、ここで判断して処理すればいいでしょう。

クリックのみの場合は、ダブルクリックには きません。

ダブルクリックの場合は、すべて通ります。

◎質問者からの返答

おっしゃることはわかるんですが、それで、ダブルクリックのときに、Dblclickイベントより先にClickイベントを通ってしまうので困っているんです。。。

Clickのときだけに処理したいことが、ダブルクリックでも処理されないようにしたいのですが、フラグをたてても、目的の動作は制御できないような。。。


3 ● きゃづみぃ
●25ポイント

http://www.hatena.ne.jp/awindow

タイマーを用いて、クリック後にチェックするしかないですね。

◎質問者からの返答

なるほどーー。

究極の方法ですね。

タイマーお世話になることも多いですが、はまっちゃうのもタイマーですねぇ。

最後の切り札!!


4 ● ke_ishi
●15ポイント

http://google.co.jp/

Google

ということは、MouseDownでフラグをonする。DblClickならダブルクリックの処理をし、フラグをoffする。MouseUp時にフラグがonならば、クリック時の処理をする。など、Clickイベントを使わない設計にしないといけないのではないでしょうか。

◎質問者からの返答

ふむ。

ダブルクリックのとき

MouseDown

NodeClick

MouseUp

Click

DblClick

MouseUp

の順にイベントが起きます(OSはWindows2000)

と言うことは、

MouseUpの時点では、結局ClickだったのかDblClickなのか識別できません。。。

残念。。

皆さん結構レスポンスが早いのでとても参考になりますねぇ。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ