C# Treeview checking if node exists

前端 未结 8 738
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-23 12:42

I\'m trying to populate a treeview from an XmlDocument. The Root of the tree is set as \'Scripts\' and from the root the next level should be \'Departments\' which is within the

8条回答
  •  轮回少年
    2021-01-23 13:19

    If your XML document has a set structure where 'Departments' will always be indexed at 1;

    ie:

    index:[0] Scripts
        index:[1] Department
            index:[2] Script
        index:[1] Department2
            index:[2] Script
    

    Then you could encapsulate the following code into a method where 'name' is a string parameter and the return type is boolean.

    foreach (TreeNode node in uxTreeView.Nodes[0].Nodes) {
        if (node.Name.ToLower() == name.ToLower()) {
            return true;
        }
    }
    return false;
    

    The idea is you would call that function each time you encounter a 'Department' node in your Xml, before creating the TreeNode.

    Full example:

    private bool DepartmentNodeExists(string name) {
        foreach (TreeNode node in uxTreeView.Nodes[0].Nodes) {
            if (node.Name.ToLower() == name.ToLower()) {
                return true;
            }
        }
        return false;
    }
    

    Lastly, the easy way:

    private bool DepartmentNodeExists(string name) {
        if (uxTreeView.Nodes[0].ContainsKey(name)) {
            return true;
        }
        else {
            return false;
        }
    }
    

    These are all just refactored and encapsulated into their own named methods, you of course could just call:

    if (uxTreeView.Nodes[0].ContainsKey(name)) {
        // do not create TreeNode
    }
    

    ...during your parsing of your XML. PS. These examples all assume that you have the first root node in the TreeView already created and added to the TreeView.

提交回复
热议问题