Проблема с TreeNodeCollection.ContainsKey () - PullRequest
3 голосов
/ 21 мая 2011

Я создаю плагин для приложения, которое работает с концепцией семей.Каждая семья принадлежит к категории FamilyCategory, и каждая семья содержит FamilySymbols.Хорошая древовидная структура:

  • FamilyCategory (Двери)
    • Family (Внешние Двери)
      • FamilySymbol (Дверь 2000x1000)
      • FamilySymbol (Дверь 2000x900)
    • Family (Гаражные ворота)
      • FamilySymbol (Дверь 2000x2000)
      • FamilySymbol (Дверь 2100x2000)
  • FamilyCategory (Windows)
    • Family (Single Windows)
      • FamilySymbol (Window 1000x1400)
      • FamilySymbol (Window 800x1400)
    • Family (двойные окна)
      • FamilySymbol (окно 2000x1400)
      • FamilySymbol (окно 2100x1400)

Теперь я пытаюсь построить TreeView, представляющий эту структуру.У меня есть список объектов Family, и у каждого из них есть свойство FamilyCategory.Я пытаюсь определить, существует ли TreeNode с именем FamilyCategory, и если это так, я пытаюсь добавить 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);
    }
}

Что я делаю не так?

1 Ответ

9 голосов
/ 21 мая 2011

попробуйте заменить это:

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

этим:

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

(TreeNodeCollection.ContainsKey() ищет свойство Name, а не свойство Text)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...