C# Treeview 检查节点是否存在

标签 c# winforms treeview

我正在尝试从 XmlDocument 填充 TreeView 。
树的根设置为“脚本”,从根开始下一级应该是 XML 脚本中的“部门”。我可以从 XML 文档中获取数据没有问题。我的问题是当循环通过 XmlDocument 并将节点添加到根节点时,我想确保如果一个部门已经在 TreeView 中,那么它不会再次添加。我还应该补充一点,每个部门还有一个脚本列表,这些脚本需要成为该部门的子节点。

到目前为止,我的代码是:

        XmlDocument xDoc = new XmlDocument();
        xDoc.LoadXml(scriptInformation);
        TreeNode t1;
        TreeNode rootNode = new TreeNode("Script View");
        treeView1.Nodes.Add(rootNode);
        foreach (XmlNode node in xDoc.SelectNodes("//row"))
        {
            t1 = new TreeNode(node["DEPARTMENT"].InnerXml);
           //How to check if node already exists in treeview?



        }

谢谢。

最佳答案

if(treeView1.Nodes.ContainsKey("DEPARTMENT")){
//...
}

编辑:递归方法:
 bool exists = false;
        foreach (TreeNode node in treeView1.Nodes) {
            if (NodeExists(node, "DEPARTMENT"))
                exists = true;
        }
    private bool NodeExists(TreeNode node, string key) {
        foreach (TreeNode subNode in node.Nodes) {
            if (subNode.Text == key) {
                return true;
            }
            if (node.Nodes.Count > 0) {
                NodeExists(node, key);
            }
        }
        return false;
    }

关于C# Treeview 检查节点是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6097029/

相关文章:

c# - 在我的 C# 应用程序中。我正在将远程机器的 CNC 程序读入字节缓冲区。如何将这个字节缓冲区逐行读取到字符串数组中?

c# - 如何在富文本框中搜索文本

c# - 通过计时器以 xamarin 形式重复异步任务

c# - 将相当于关联数组的内容从 Controller 传递到 MVC 4 中的 View 的最佳方法

c# - 自定义绘制下拉面板在控制范围之外

c# - 通过 C# 获取应用程序运行的根目录的普遍方法

treeview - 删除 JavaFX TreeView 滚动 Pane

python - 从 Treeview 中选择自动将字符串数字转换为整数

javascript - 无法访问从 ng-repeat 调用的函数中的用户输入

c# - 在下拉列表中仅显示一个特定值