~環境~
Microsoft Visual Studio Professional 2017 Version 15.9.17
.NET Framework 4.6.1
Windowsフォームアプリケーション
--
vb.net の Windowsフォーム で tree view を利用し、システムメニュー画面を開発してます。
親ノードとしてメニュー分類、子ノードとしてメニューになります。
A.formロード時は親ノード閉じており、親ノードをダブルクリックすると子ノードが展開されます。
※これは標準イベント(?)なので、自らイベントのプログラムは書いてません。
B.子ノードのダブルクリックイベントで、メニュー実行するようにプログラムを書いています。
vb.net
1 Private Sub TreeView_DoubleClick(ByVal sender As Object, ByVal e As MouseEventArgs) Handles TreeView.DoubleClick 2 Dim nodeMenu As TreeNode 3 'ノードを取得 4 nodeMenu = TreeView.GetNodeAt(e.X, e.Y) 5 'ノードが最下層の場合は処理 6 If nodeMenu.Nodes.Count = 0 Then 7 Debug.Print("メニュー実行") 8 End If 9 End Sub
そこで問題なのですが、
Aの親ノードダブルクリック時、子ノードの数がTreeView枠内に収まらない場合、※スクロールバーを表示しています
ダブルクリックをした親ノードがTreeViewの枠の一番上の位置に移動しますが、
ダブルクリックをした親ノードが元々いた位置に子ノードが配置されるため、
Aの親ノードのダブルクリックと、Bの子ノードのダブルクリックのイベントが同時に発生してしまいます。
望む結果としては、
⓵親ノードのダブルクリック時には、子ノードの展開のみにさせたい
⓶子ノードのダブルクリック時のみ、メニュー実行させたい
になります。
解決策を教えて頂きたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/01 05:32