簡體   English   中英

在運行時添加TreeView時如何將AfterCheck事件處理程序添加到TreeNode

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM