Problem with TreeNodeCollection.ContainsKey()

本文关键字:ContainsKey TreeNodeCollection with Problem | 更新日期: 2023-09-27 17:57:02

我正在为一个与家庭概念一起工作的应用程序创建一个插件。每个家庭都属于一个家庭类别,每个家庭都包含家庭符号。像这样漂亮的树结构:

  • 家庭类别(门)
    • 家庭间(外门)
      • 家庭符号 (门 2000x1000)
      • 家庭符号 (门 2000x900)
    • 家庭(车库门)
      • 家庭符号 (门 2000x2000)
      • 家庭符号 (门 2100x2000)
  • 家庭类别 (Windows)
    • 家庭房(单人窗)
      • 族符号(窗口 1000x1400)
      • 族符号(窗口 800x1400)
    • 家庭间(双层窗户)
      • 族符号(窗口 2000x1400)
      • 族符号(窗口 2100x1400)

现在,我正在尝试构建一个表示该结构的树视图。我有一个 Family 对象的列表,每个对象都有一个 FamilyCategory 属性。我正在尝试确定是否已经存在具有家庭类别名称的树节点,如果存在,我正在尝试将家族添加到该节点。如果该类别的节点不存在,我会创建一个新节点并在那里添加族。不幸的是,下面的代码总是评估类别存在为假。

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);
    }
}

我做错了什么?

Problem with TreeNodeCollection.ContainsKey()

尝试替换它:

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

通过这个:

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

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