質問: 0 Then Debug.Print("メニュー実行") End If End Sub ``` そこで問題なのですが、 Aの親ノードダブルクリック時、子ノードの数がTreeView枠内に収まらない場合、※スクロールバーを表示しています ダブルクリックをした親ノードがTreeViewの枠の一番上の位置に移動しますが、 ダブルクリックをした親ノードが元々いた位置に子ノードが配置されるため、 Aの親ノードのダブルクリックと、Bの子ノードのダブルクリックのイベントが同時に発生してしまいます。 望む結果としては、 ⓵親ノードのダブルクリック時には、子ノードの展開のみにさせたい ⓶子ノードのダブルクリック時のみ、メニュー実行させたい になります。 解決策を教えて頂きたいです。
回答: 親Nodeをダブルクリックした際のSelectedNodeは親Nodeなので ``` Private Sub TreeView_DoubleClick(ByVal sender As Object, ByVal e As MouseEventArgs) Handles TreeView1.DoubleClick Dim nodeMenu As TreeNode 'ノードを取得 nodeMenu = TreeView1.GetNodeAt(e.X, e.Y) 'ノードが最下層の場合は処理 If TreeView1.SelectedNode.Nodes.Count = 0 Then Debug.Print("メニュー実行") End If End Sub ``` と選択されているノードの子ノードの数を取ってはどうでしょうか また、Nodeのダブルクリックなのであれば、TreeView.NodeMouseDoubleClickイベントを使用されるべきかと思います。 現状ですと、ノードの無い空白部分のダブルクリックにも反応します。 追記:すみません、確認したところNodeMouseDoubleClickイベントでも空白部分に反応してしまうようです。