DOBON.NET DOBON.NETプログラミング掲示板過去ログ

TreeViewの右クリックにおけるフォーカス移動について

環境/言語:[Win XP SP1 / VB.NET 2003 / Framework1.1]
分類:[.NET]

2004/08/29(Sun) 17:09:51 編集(投稿者)

いつもお世話になっております、にしかわです。
またまたTreeView関連ですが、お教え頂けると幸いです。

現在TreeViewで、右クリックしたら、PopupMenuが表示され、削除ボタンがでる
ソースを作成しています。
その際に、子ノード選択時のみ、PopupMenuを表示しようとしているのですが、
表題にもありますように、TreeViewでノードを右クリック(mouseDown)をしますと、
一応右クリックされたノードが青色に反転するのですが、mouseUpすると、
元のノードに戻ったり、フォーカスがあった個所に点線が残ったままになります。

右クリックでも、クリック同様にフォーカス移動をさせたいのですが、
できずに難儀しています。
TreeViewにフォーカスをセットしても、選択されたノードにフォーカス移動した
わけでなく、どのメソッドでクリック同様の動きができるのか判らず、
質問させて頂きました。

大変申し訳ないですが、皆様のお力をお貸し頂けると嬉しいです。
よろしくお願い致します。
2004/08/30(Mon) 10:16:24 編集(投稿者)

■No5881に返信(にしかわ あつこさんの記事)

こんにちわ、にしかわさん。
またまた、役立たずのjava.lang.Nullpoです。

> いつもお世話になっております、にしかわです。
> またまたTreeView関連ですが、お教え頂けると幸いです。
>
> 現在TreeViewで、右クリックしたら、PopupMenuが表示され、削除ボタンがでる
> ソースを作成しています。
> その際に、子ノード選択時のみ、PopupMenuを表示しようとしているのですが、
> 表題にもありますように、TreeViewでノードを右クリック(mouseDown)をしますと、
> 一応右クリックされたノードが青色に反転するのですが、mouseUpすると、
> 元のノードに戻ったり、フォーカスがあった個所に点線が残ったままになります。
>
> 右クリックでも、クリック同様にフォーカス移動をさせたいのですが、
> できずに難儀しています。
> TreeViewにフォーカスをセットしても、選択されたノードにフォーカス移動した
> わけでなく、どのメソッドでクリック同様の動きができるのか判らず、
> 質問させて頂きました。
>
> 大変申し訳ないですが、皆様のお力をお貸し頂けると嬉しいです。
> よろしくお願い致します。

こんな感じで、カレントノードを移動させてあげちゃダメかしら?
コンテキストメニューがどのタイミングで出るかにも因りますが...

  Private Sub TreeView1_MouseDown(略
    Dim hPoint As Point
    Dim hNode As TreeNode

    hPoint = TreeView1.PointToClient(Cursor.Position)
    hNode = TreeView1.GetNodeAt(hPoint)

    TreeView1.SelectedNode = hNode
  End Sub
java.lang.Nullpo 様

いつもお世話になっております。
にしかわです。

>   Private Sub TreeView1_MouseDown(略
>     Dim hPoint As Point
>     Dim hNode As TreeNode
>
>     hPoint = TreeView1.PointToClient(Cursor.Position)
>     hNode = TreeView1.GetNodeAt(hPoint)
>
>     TreeView1.SelectedNode = hNode
>   End Sub

java.lang.Nullpo 様にお教え頂いたもので、無事解決致しました。
上記のようにできたなんて、目から鱗の思いです。
私自身の力不足を痛感するばかりです。
本当にありがとうございます。

参考までに、実際に作成したコードの一部を添付(?)致しました。
(この記事にはファイル"TreeView.txt"が添付されていましたが、削除されました。)
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板