Динамическое контекстное меню на узлах Treeview

Duplicate Of: Найти узел, нажатый в контекстном меню

У меня есть контекстное меню в древовидном меню, когда пользователь щелкает правой кнопкой мыши, оно должно меняться в зависимости от объекта тега узла, который щелкнул правой кнопкой мыши.

В настоящее время я обновляю контекстное меню в событии after_select, однако это не работает, когда пользователь щелкает правой кнопкой мыши по другому узлу без его выбора.

Как я могу определить, какой узел щелкнул правой кнопкой мыши и изменить контекстное меню? Или я делаю это неправильно?

13.12.2008 22:54:56
Жаль, что вы не нашли stackoverflow.com/questions/2527/c-treeview-context-menus
Guge 13.12.2008 23:58:53
хорошо подмечено. Либо я ужасен в поисковых запросах, так что поиск отстой. Во всяком случае обновляется.
dr. evil 14.12.2008 00:22:07
2 ОТВЕТА
РЕШЕНИЕ

Вы можете использовать событие MouseDown и метод HitTest, чтобы узнать, какой узел был нажат.

4
13.12.2008 23:02:52
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
3
22.12.2008 19:52:13