フォルダーとファイルが取り込まれたツリー ビュー。また、ツリー ビューをフィルタリングするために以下のコードを使用しましたが、文字列に一致するすべてのファイルが返されるわけではなく、1 つのファイルが返されるだけです。たとえば、文字「f」は3つのファイルにありますが、検索すると1つのファイルしか返されません。
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;
}
/// <summary>
/// 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)
/// </summary>
/// <param name="parentNode">Parent node to search for a match</param>
/// <param name="searchstring">string to be matched with the Nodes Value property</param>
/// <returns>Treenode of the matching node if found. If not found it will be null</returns>
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";
}