Select A Node ASP.NET TreeView Control Programatically

I am creating treeview nodes dynamically in code when I create a node I set the
newNode.SelectAction = TreeNodeSelectAction.Select
which makes the node selectable  and when I manually click on a node the TreeView1.SeletedIndexChanged fires as expected.

The problem comes in in the Search functionality. The code to search for a name locates the proper name in the treeview and changes its font color to lime which is the functionality I want.

What I need the search to do it not only change the font color (which it does already) but also select the node and fire the SelectedNodeChanged event programatically. I added "node.Select() to my code but it does nothing.

Can anyone help. Thanks in advance.
Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSearch.Click
        For Each node As TreeNode In TreeView1.Nodes
            If (node.Text = txtSearch.Text) Then
                node.Text = "<span style='color: lime'>" & node.Text & "</span>"
            ElseIf (node.ChildNodes) IsNot Nothing Then

            End If

    End Sub

    Private Sub CheckChildNodes(ByVal node As TreeNode)
        For Each childNode As TreeNode In node.ChildNodes
            If childNode.Text = txtSearch.Text Then
                childNode.Text = "<span style='color: lime'>" & childNode.Text & "</span>"
            ElseIf childNode.ChildNodes IsNot Nothing Then
            End If
    End Sub

    Private Sub ExpandAllNodes(ByVal node As TreeNode)
        Dim nodeParent As TreeNode = node.Parent
        While (nodeParent.Parent IsNot Nothing)
            nodeParent = nodeParent.Parent
        End While
    End Sub

    Private Sub TreeView1_SelectedNodeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.SelectedNodeChanged
        Label1.Text = "Hi " + TreeView1.SelectedNode.Text
    End Sub

Open in new window

Who is Participating?
Miguel OzConnect With a Mentor Software EngineerCommented:
Replace line 37 to 39 with:
Private Sub TreeView1_SelectedNodeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.SelectedNodeChanged
End Sub

Private Sub DoSelectedNodeChanged(ByVal selected As TreeNode)
        ' Put your common code here to use selected  
End Sub

Replace line 22 with:

Thus you call the same shared implementation that will fire when the user selects a node or your code selects it programatically
Miguel OzSoftware EngineerCommented:
Your code seems OK, you can force the call to TreeView1_SelectedNodeChanged by adding it on line 22.
               ' add the call here I will put as a separate method (DoSelectedNodeChanged(ByVal selected As TreeNode)

If you select the node in code, the   TreeView1_SelectedNodeChanged will not fired. It is just the way works.
npl77Author Commented:
How do you add the call can you show me? Not too good with event handling
npl77Author Commented:
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.