TreeViewの子ノードを左クリックと右クリックした時で処理を分けたいのですが、どうすれば良いのかわかりません。
アドバイスを宜しくお願い致します。
書き忘れていましたが、VB6.0を使用しています。
過去ログ検索『右クリック』や『TreeView』などを実行し、
参考になるコードを探してみて下さい。
MouseDown イベントの引数 Button を使ってみてください。
右クリックの場合Clickイベントが起きない為、どのノードが
クリックされたか判らないのよね。
私の場合は結局あきらめて、一度左クリックでノードを決定させて、
それから右クリックを受け付ける様にしました。
これなら、特攻隊長さんのMouseDownが使える。
VBもTreeViewをサブクラス化してlParamで
NM_RCLICKでできたっけかなー?
こんな感じでもいけるんじゃないかな。
1)TreeViewのMouseDownイベントでHitTestメソッドを使用してその時のノードを取得
2)MouseUpイベントでHitTestメソッドを使用して1)で取得したノードと一致
かつ取得したノードがNothingでないなら
3)MouseUpイベントの引数Buttonを調べて右ボタンであれば右クリックとする
勘違いがありました、これだけでいけました、失礼しました。orz
Dim intButton As Integer
Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
intButton = Button
End Sub
Private Sub TreeView1_Click()
If intButton = 1 Then
MsgBox ("左クリック")
ElseIf intButton = 2 Then
MsgBox ("右クリック")
End If
End Sub
> 勘違いがありました、これだけでいけました
>
それも勘違い。
>> 勘違いがありました、これだけでいけました
>>
>それも勘違い。
理由も書いてくれると嬉しい。単純な動きなら問題無さそうだったけど?
>TreeViewの子ノードを左クリックと右クリックした時で処理を分けたい
用件は満たしてそうに思います。子ノードの展開時やノード以外の場所
のクリック処理は別の内容になってくるし、HitTest というキーワードも
出てます。今の段階で作り込んだコードを示しても…『理解できません』
とか言う人多いからなぁ…w。我龍院忠太さんのサンプルのレベルは適当な
レベルのようですが…。
勘違い(による不具合)の内容が具体的に書いてあると参考になります。
ツイート | ![]() |