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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/12/01 16:58:16
  • 終了:--

回答(4件)

id:ke_ishi No.1

ke_ishi回答回数269ベストアンサー獲得回数02004/12/01 17:04:11

ポイント15pt

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

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

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

id:bigeye

ありがとうございます。

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

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

2004/12/01 17:14:37
id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982004/12/01 17:16:17

ポイント15pt

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

TreeView1_Click

TreeView1_DblClick

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

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

TreeView1_NodeClick

で フラグを立てます。

そのあと

TreeView1_Click

TreeView1_DblClick

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

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

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

id:bigeye

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

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

2004/12/01 17:26:07
id:taknt No.3

きゃづみぃ回答回数13539ベストアンサー獲得回数11982004/12/01 17:29:19

ポイント25pt

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

id:bigeye

なるほどーー。

究極の方法ですね。

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

最後の切り札!!

2004/12/01 17:32:52
id:ke_ishi No.4

ke_ishi回答回数269ベストアンサー獲得回数02004/12/01 17:36:34

ポイント15pt

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

id:bigeye

ふむ。

ダブルクリックのとき

MouseDown

NodeClick

MouseUp

Click

DblClick

MouseUp

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

と言うことは、

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

残念。。

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

2004/12/01 17:58:52
  • id:upride
    お気をつけて

    Node_Click内ではクリックかダブルかは
    判断つきませんが
    ここに処理書かないと(ここから処理を呼んでもOKですが)
    ↓↑キー時の処理が効かなくなりますよ
    カーソルのノード移動でも発生するイベントなので

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません