我正在为使用家庭概念的应用程序创建一个插件。
每个家庭都属于一个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/