Tree view filtering does not return all the files
<p>My tree view populated by folders and files. And I have used below code for filtering tree view but it does not return all the files that match string, just it returns one file. 
For example letter "f" there is in 3 files but when I search it returns just 1 file.</p>

<pre><code>private TreeNode FindNodeByValue(TreeNodeCollection nodes, string searchstring)
{

    // Loop through the tree node collection
    foreach (TreeNode node in nodes)
    {
        // Does the value match the search string?
        if (node.Value.ToUpper().Contains (searchstring.ToUpper()))
            // Yes it does match - return it
            return node;
        else
        {
            // No it does not match - search any child nodes of this node
            TreeNode childNode = SearchChildNodes(node, searchstring);
            // If the childNode is not null it was a match
            if (childNode != null)
                // Return the matching node
                return childNode;
        }
    }
    // If the matching node is not found return null
    return null;
}

/// &lt;summary&gt;
/// This method searches a node's ChildNodes collection to find a matching value
/// with the incoming search string
/// It will iteratively call itself as it drills into each nodes child nodes (if present)
/// &lt;/summary&gt;
/// &lt;param name="parentNode"&gt;Parent node to search for a match&lt;/param&gt;
/// &lt;param name="searchstring"&gt;string to be matched with the Nodes Value property&lt;/param&gt;
/// &lt;returns&gt;Treenode of the matching node if found.  If not found it will be null&lt;/returns&gt;
private TreeNode SearchChildNodes(TreeNode parentNode, string searchstring)
{
    // Loop through the child nodes of the parentNode passed in
    foreach (TreeNode node in parentNode.ChildNodes)
    {
        // Does the value match the search string?
        if (node.Value.ToUpper().Contains(searchstring.ToUpper()))
            // Yes it does match - return it
            return node;
        else
        {
            // No it does not match - recursively search any child nodes of this node
            TreeNode childNode = SearchChildNodes(node, searchstring);
            // If the childNode is not null it was a match
            if (childNode != null)
                // Return the matching node
                return childNode;
        }
    }
    // If the matching node is not found OR if there were no child nodes then return null
    return null;
}


protected void Button1_Click(object sender, EventArgs e)
{
    TreeNode trnode=FindNodeByValue(TreeView1.Nodes, fieldFilterTxtBx.Text);
    if (trnode != null)
    {
        TreeView1.Nodes.Clear();
      //  TreeNode newnode = new TreeNode("Detail Engineering");
       // TreeView1.Nodes.Add(newnode);
        TreeView1.Nodes.Add(trnode);
        TreeView1.ExpandAll();
    }
    else

{

Label1.Text = "No file found";

}
</code></pre>
