ユーザーが右クリックすると、現在右クリックされているノードのタグオブジェクトに基づいて変更されるはずのコンテキストメニューがツリービューに表示されます。
現在、after_select イベントでコンテキスト メニューを更新していますが、ユーザーが別のノードを選択せずに右クリックすると機能しません。
どのノードが右クリックされたかを検出し、コンテキスト メニューを変更するにはどうすればよいですか? それとも私はそれを間違っていますか?
ユーザーが右クリックすると、現在右クリックされているノードのタグオブジェクトに基づいて変更されるはずのコンテキストメニューがツリービューに表示されます。
現在、after_select イベントでコンテキスト メニューを更新していますが、ユーザーが別のノードを選択せずに右クリックすると機能しません。
どのノードが右クリックされたかを検出し、コンテキスト メニューを変更するにはどうすればよいですか? それとも私はそれを間違っていますか?
MouseDown イベントと HitTest メソッドを使用して、クリックされたノードを確認できます。
Private Sub tvTables_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles tvTables.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
Dim M As New ContextMenuStrip
Dim HTI As TreeViewHitTestInfo = tvTables.HitTest(e.X, e.Y)
If HTI.Node.Level = 0 Then
M = T1Menu
ElseIf HTI.Node.Level = 1 Then
M = T2Menu
ElseIf HTI.Node.Level = 2 Then
M = T3Menu
End If
tvTables.ContextMenuStrip = M
tvTables.ContextMenuStrip.Show()
End If
End Sub