C# TreeView 递归搜索与高亮:快速查找并标记节点
C# 在treeview1的三级节点中根据textbox5的值进行模糊查找并标记背景色为黄色,并能寻找下一个包含该文本的节点内容:你可以使用递归的方式遍历treeview1的所有节点,然后根据textbox5的值进行模糊查找并标记背景色为黄色。同时,你可以使用一个变量来记录当前节点的索引,以便能够寻找下一个包含该文本的节点。\n\n以下是一个示例代码:\n\ncsharp\nprivate int currentIndex = -1; \n\nprivate void SearchAndHighlightNodes(TreeNodeCollection nodes, string searchText) \n{\n foreach (TreeNode node in nodes) \n {\n // 检查当前节点的文本是否包含搜索文本 \n if (node.Text.Contains(searchText)) \n {\n // 标记背景色为黄色 \n node.BackColor = Color.Yellow; \n\n // 更新当前节点的索引 \n currentIndex = node.Index; \n } \n\n // 递归处理子节点 \n SearchAndHighlightNodes(node.Nodes, searchText); \n } \n} \n\nprivate void btnSearch_Click(object sender, EventArgs e) \n{\n // 清除之前的标记 \n ClearNodeBackgroundColors(treeView1.Nodes); \n\n // 开始搜索并标记节点 \n SearchAndHighlightNodes(treeView1.Nodes, textBox5.Text); \n\n // 如果找到匹配的节点,则选中下一个节点 \n if (currentIndex != -1 && currentIndex + 1 < treeView1.Nodes.Count) \n {\n treeView1.SelectedNode = treeView1.Nodes[currentIndex + 1]; \n } \n} \n\nprivate void ClearNodeBackgroundColors(TreeNodeCollection nodes) \n{\n foreach (TreeNode node in nodes) \n {\n // 清除背景色 \n node.BackColor = Color.White; \n\n // 递归处理子节点 \n ClearNodeBackgroundColors(node.Nodes); \n } \n} \n\n\n在上述示例代码中,SearchAndHighlightNodes 方法使用递归方式遍历treeview1的所有节点,并根据textbox5的值进行模糊查找并标记背景色为黄色。ClearNodeBackgroundColors 方法用于清除之前的标记。btnSearch_Click 事件处理程序在点击“搜索”按钮时调用 SearchAndHighlightNodes 方法,并在找到匹配的节点后选中下一个节点。
原文地址: https://www.cveoy.top/t/topic/qbsm 著作权归作者所有。请勿转载和采集!