У меня есть следующие treeview
:рекурсивная функция не может найти узел и возвращает нулевое значение
-node1 //ID=1
-node1.1 //ID=1/1
-node1.2
-node2
-node2.1
-node2.1.1 //ID = 2/1/1
-node2.2
-node2.3
-node3
-node3.1
-node3.1.1
-node3.1.2 //ID = 3/1/2
-node3.2
-node3.2.1
"ID"
который я использую точно порядок ребенка и уже в Tag
узла. Например, я хочу найти узел -node3.1.2
, и я использую узел с itemId = "3/1/2"
, который я прошел через Tag
.
Вот мой код:
public TreeNode FromID(string itemId, TreeNode rootNode)
{
foreach (TreeNode node in rootNode.Nodes)
{
if (node.Tag != null)
{
var value = node.Tag as NodeTag;
string Node_ID = value.NodeID;
if (Node_ID.Equals(itemId)) return node;
TreeNode next = FromID(itemId, node);
if (next != null) return next;
}
}
return null;
}
Когда я бегу код, то он всегда null
как выход. Я смущен, почему у меня это есть? Могу ли я попросить вас об этом?
Вы пробовали отлаживать код? Затем вы можете увидеть, что происходит. –
@tahatmat, yap, я сделал это. но он не смог найти «узел». –
Какое значение вы получите, если вы делаете «int c = string.Compare (itemId, Node_ID);»? Если это не возвращает 0, то ваши строки как-то разные, и вам нужно изучить их значения и понять, почему. –