我正在为使用家庭概念的应用程序创建一个插件。
每个家庭都属于一个FamilyCategory,每个家庭都包含FamilySymbols。
像这样的不错的树结构:


家庭类别(门)

家庭(外门)

FamilySymbol(Door 2000x1000)
FamilySymbol(Door 2000x900)

家庭(车库门)

FamilySymbol(Door 2000x2000)
FamilySymbol(Door 2100x2000)


FamilyCategory(Windows)

家庭(单窗口)

FamilySymbol(Window 1000x1400)
FamilySymbol(Window 800x1400)

家庭(双窗口)

FamilySymbol(Window 2000x1400)
FamilySymbol(Window 2100x1400)




现在,我正在尝试构建一个表示该结构的TreeView。我有一个Family对象的列表,每个对象都有一个FamilyCategory属性。我试图确定是否已经存在具有FamilyCategory名称的TreeNode,如果确实存在,我试图将Family添加到该节点。如果该类别的节点不存在,那么我创建一个新节点并在其中添加族。
不幸的是,下面的代码始终将categoryExists评估为false。

foreach (Family family in families)
{
    string familyCategoryName = family.FamilyCategory.Name;

    bool categoryExists = treeView.Nodes.ContainsKey(familyCategoryName);

    if (categoryExists)
    {
        categoryNode = treeView.Nodes[familyCategoryName];
    }
    else
    {
        categoryNode = new TreeNode(familyCategoryName);
        treeView.Nodes.Add(categoryNode);
    }

    TreeNode familyNode = new TreeNode(family.Name);

    categoryNode.Nodes.Add(familyNode);

    foreach (FamilySymbol familySymbol in family.Symbols)
    {
        familyNode.Nodes.Add(familySymbol.Name);
    }
}


我究竟做错了什么?

最佳答案

尝试替换此:

categoryNode = new TreeNode(familyCategoryName);
treeView.Nodes.Add(categoryNode);


这样:

categoryNode = new TreeNode(familyCategoryName);
categoryNode.Name = familyCategoryName;
treeView.Nodes.Add(categoryNode);


TreeNodeCollection.ContainsKey()搜索Name属性,而不是Text属性)

关于c# - TreeNodeCollection.ContainsKey()问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6078953/

10-09 04:31