0
我想添加一個上下文菜單到vb.net樹視圖,但沒有得到所需的行爲。當我在樹形視圖中右鍵單擊時,我可以根據用戶點擊的位置使用不同的選項顯示上下文菜單,但是如果用戶在樹視圖中的其他位置單擊並且上下文菜單已經啓動,則上下文菜單會簡單地清除並執行不會再出現在新的點擊位置(就像在Web瀏覽器中多次右鍵單擊一樣)。上下文菜單與每個右鍵單擊vb.net
這是我到目前爲止有:
Private Sub treeviewMain_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles treeviewMain.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
'Determine which tree structure is loaded in tree view.
If (treeviewMain.Nodes.Item(0).Name = "MainNode") Then
Test(sender, e)
Else
OtherTest(sender, e)
End If
End If
End Sub
Private Sub Test(sender As Object, e As System.Windows.Forms.MouseEventArgs)
Dim Context As ContextMenu = New ContextMenu
Dim NodeClicked As TreeNode
NodeClicked = Me.tvwMain.GetNodeAt(e.X, e.Y)
If NodeClicked Is Nothing Then
Context.MenuItems.Add("New Item")
Context.Show(treeviewMain, e.Location)
ElseIf NodeClicked.Name = "MainNode" Then
tvwMain.SelectedNode = NodeClicked
Context.MenuItems.Add("New Item")
Context.Show(treeviewMain, e.Location)
ElseIf NodeClicked.Level = 0 And NodeClicked.Name <> "MainNode" Then
tvwMain.SelectedNode = NodeClicked
Context.MenuItems.Add("Rename")
Context.MenuItems.Add("Delete")
Context.MenuItems.Add("-")
Context.MenuItems.Add("New")
Context.Show(treeviewMain, e.Location)
ElseIf NodeClicked.Level = 1 Then
tvwMain.SelectedNode = NodeClicked
Context.MenuItems.Add("Edit")
Context.MenuItems.Add("Copy")
Context.MenuItems.Add("Delete")
Context.Show(treeviewMain, e.Location)
End If
End Sub
反正是有得到在vb.net這種行爲?
我想我會還需要有代碼在鼠標按下事件來改變節點的焦點上點右鍵。會有這樣的工作嗎? (1).ToString).ContextMenuStrip = test5'。 Im從一個作爲數據表引入的表中填充0級和1級節點。 – Alex
是的,它的工作原理。假設選擇了_Main Node_,並右鍵單擊_Other Level 0 Node_,然後_Other Level 0 Node_將獲得焦點並選中,並且將顯示_ContextMenu_ –
'treeviewMain.Nodes.Add(「CategoryID =」&row.Item (0).ToString,row.Item(1).ToString).ContextMenuStrip = test5'不正確! 您先創建_Node_對象,然後將_ContextMenu_設置爲它,然後添加到_TreeView_。 '昏暗tmpNode作爲新樹節點( 「類別ID =」 &row.Item(0)的ToString,row.Item(1)的ToString())'' = tmpNode.ContextMenuStrip test5' 'treeviewMain.Nodes.Add (tmpNode)' –