2016-07-18 146 views
1

如果用戶在樹形視圖(右側或左側)上單擊並且光標不在節點上,我想將選定節點設置爲空。我認爲如果控件的任何部分被點擊了,TreeView.MouseClick事件會觸發,但似乎只在點擊節點時觸發。有沒有辦法做到這一點?Treeview.Click和.MouseClick事件在沒有點擊節點時不會觸發

編輯*我知道如何將選中的節點設置爲空,tvwMain.SelectedNode = Nothing,但是當單擊控件時並沒有節點,因爲TreeView.MouseClick和TreeView.Click事件沒有除非單擊節點,否則似乎會觸發。

Private Sub tvwMain_NodeMouseClick(sender As Object, e As MouseEventArgs) Handles tvwMain.Click 
    Dim p = New Point(e.X, e.Y) 
    Dim node As TreeNode = tvwMain.GetNodeAt(p) 

    If node IsNot Nothing Then 
     tvwMain.SelectedNode = node 
     MsgBox("HERE") 
    Else 
     tvwMain.SelectedNode = Nothing 
     MsgBox("TOO") 
    End If 
End Sub 
+0

的WinForms,WPF或ASP.Net? –

+0

[如何清除TreeView中選定節點的選擇?](http://stackoverflow.com/questions/11824443/how-do-i-clear-the-selection-of-a-selected -node-in-treeview) –

+0

我可以將選中的節點設置爲空,'tvwMain.SelectedNode = Nothing',但我想在用戶點擊控件時這樣做,但點擊下沒有節點。此外,WinForms – Alex

回答

1
TreeNode test = tvwMain.GetNodeAt(tvwMain.PointToClient(Cursor.Position)) 
If IsNothing(test) Then tvwMain.SelectedNode = Nothing 
+0

我有一個類似於此的方法(上面已添加)但有相同的問題,事件不會觸發, – Alex

+1

如果.Click,.MouseClick,NodeMouseClick事件不會觸發,除非光標在節點上,那麼使用其中一個像MouseDown或Hover這樣的事件:https://msdn.microsoft.com/en-us/library/system.windows.forms.treeview_events(v=vs.110).aspx –

+0

鼠標移動似乎已經成功了。 – Alex