#c# #.net #treeview
#c# #.net #просмотр дерева
Вопрос:
Я создаю плагин для приложения, которое работает с концепцией семейств. Каждое семейство принадлежит к категории FamilyCategory, и каждое семейство содержит символы FamilySymbols. Хорошая древовидная структура вроде этой:
- Семейная категория (двери)
- Семейство (внешние двери)
- Символ семейства (Door 2000×1000)
- Семейный символ (Door 2000×900)
- Семейство (гаражные ворота)
- Символ семейства (Door 2000×2000)
- Символ семейства (Door 2100×2000)
- Семейство (внешние двери)
- Семейная категория (Windows)
- Семейство (одиночные окна)
- FamilySymbol (окно 1000×1400)
- FamilySymbol (окно 800×1400)
- Семейство (двойные окна)
- FamilySymbol (окно 2000×1400)
- FamilySymbol (окно 2100×1400)
- Семейство (одиночные окна)
Теперь я пытаюсь создать TreeView, представляющий эту структуру. У меня есть список объектов семейства, и у каждого из них есть свойство FamilyCategory. Я пытаюсь определить, существует ли уже TreeNode с именем FamilyCategory, и если это так, я пытаюсь добавить семейство к этому узлу. Если узел для этой категории не существует, я создаю новый и добавляю туда семейство. К сожалению, приведенный ниже код всегда оценивает 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:
попробуйте заменить это:
categoryNode = new TreeNode(familyCategoryName);
treeView.Nodes.Add(categoryNode);
этим:
categoryNode = new TreeNode(familyCategoryName);
categoryNode.Name = familyCategoryName;
treeView.Nodes.Add(categoryNode);
( TreeNodeCollection.ContainsKey()
выполняет поиск по Name
свойству, а не по Text
свойству)
Комментарии:
1. Серьезно! Ты видишь этот бумажный пакет у меня на голове? 2 часа потрачено впустую, и я даже вчера читал, что containsKey выполняет поиск в свойстве Name. Спасибо.