Я использую класс, производный от TreeNode, так что я могу добавить пользовательские свойства для каждого узлаРодитель свойство производного класса TreeNode
public class CustomNode : TreeNode
{
public int preloadIndex;
public string uniqueID = "0";
public int layer;
public string internalName;
public bool lsActive;
}
В какой-то момент мой код собирает кучу узлов в списке, и Мне нужно получить пользовательские свойства от родителей каждого из этих узлов.
List<CustomNode> NodeList = new List<CustomNode>;
//some nodes are collected into the list
foreach (var aNode in NodeList)
{
CustomNode parentNode = (CustomNode)aNode.Parent;
int parentIndex = parentNode.preloadIndex;
string parentID = parentNode.uniqueID;
}
Проблема заключается в том aNode.Parent возвращает TreeNode вместо моего пользовательского класса, и его отливки, как я пытался выше не работает.
Необработанное исключение типа «System.InvalidCastException» произошло в myProject.exe Дополнительная информация: Не удалось привести объект типа «System.Windows.Forms.TreeNode» к типу «myProject.CustomNode».
Кастинг aNode.parent as CustomNode
не работает eiher, он возвращает null
. TreeNodeCollection.Find
также возвращает TreeNode
.
Есть ли какой-либо способ получить родительский узел, желательно без перебора по всему TreeView
?
Как вы объявить Материнская собственность? Я предполагаю, что это в классе TreeNode, но каков его тип? –
Я не уверен на 100%, если это сработает, но вы попробовали «aNode.Parent as CustomNode»? – Rariolu
@EmmanuelDURIN Я не объявлял его, он унаследован от базового класса TreeNode. Теперь это похоже на причину моей проблемы, когда вы упомянули об этом.Есть ли способ определить свойство Parent как CustomNode и в то же время сохранить его функциональность? – Radu