[英]How do I add AfterCheck Event handler to TreeNode when TreeView is added at runtime
我正在嘗試為TreeNode AfterCheck事件創建事件處理程序。 我想檢查所有的孩子,當父母被選中。 唯一的問題是,我不確定在運行時創建TreeView時如何執行此操作。 此代碼假定表單上已經有一個名為treeView1的TreeView。 我需要怎么做才能將TreeView1替換為尚不存在的TreeView?
' Updates all child tree nodes recursively.
Private Sub CheckAllChildNodes(treeNode As TreeNode, nodeChecked As Boolean)
Dim node As TreeNode
For Each node In treeNode.Nodes
node.Checked = nodeChecked
If node.Nodes.Count > 0 Then
' If the current node has child nodes, call the CheckAllChildsNodes method recursively.
Me.CheckAllChildNodes(node, nodeChecked)
End If
Next node
End Sub
' NOTE This code can be added to the BeforeCheck event handler instead of the AfterCheck event.
' After a tree node's Checked property is changed, all its child nodes are updated to the same value.
Private Sub node_AfterCheck(sender As Object, e As TreeViewEventArgs) Handles treeView1.AfterCheck
' The code only executes if the user caused the checked state to change.
If e.Action <> TreeViewAction.Unknown Then
If e.Node.Nodes.Count > 0 Then
' Calls the CheckAllChildNodes method, passing in the current
' Checked value of the TreeNode whose checked state changed.
Me.CheckAllChildNodes(e.Node, e.Node.Checked)
End If
End If
End Sub
正確的代碼
我在添加樹視圖的位置添加了
AddHandler newTree.AfterCheck, AddressOf node_AfterCheck
然后,我對上面的代碼所做的就是將其刪除
Handles treeView1.AfterCheck
在事件處理程序聲明中。
我還能夠添加另一個事件處理程序以將光標更改為Cursors.No(如果將鼠標懸停在子節點上,則不,如果將鼠標懸停在父節點上,則將手變為)。 這與后檢查處理程序添加在同一位置。
AddHandler newTree.NodeMouseHover, AddressOf node_MouseOver
這是實際的事件處理程序
' Event handler for node mouse over
Private Sub node_MouseOver(sender As Object, e As TreeNodeMouseHoverEventArgs)
If e.Node.Tag > 99999999 Then
sender.Cursor = Cursors.Hand
Else
sender.Cursor = Cursors.No
End If
End Sub
可以指示程序中其他地方添加的新TreeNode
對象使用相同的AfterCheck
方法,例如,通過編寫
Dim myTreeView As New TreeView 'create a new tree view
AddHandler myTreeView.AfterCheck, AddressOf node_AfterCheck 'add this speficic AfterCheck callback to the new TreeView.
'Add myTreeView to the GUI..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.