2011-11-11 148 views
2

Woohoo!我得到一個關於堆棧溢出的問題...在stackoverflow :)C#填充TreeView遞歸堆棧溢出

所以它可能只是它是星期五,我的大腦已經炸了,但我想寫一個遞歸填充給定TreeView的類使用從TreeNode和簡單接口繼承的通用類型的對象。

出於某種原因,我在嘗試填充節點時遇到了一個stackoverflow異常。

我簡單的接口:

public interface ITreeNode 
{ 
    int ItemID { get; set; } 
    int ParentID { get; set; } 
} 

遞歸碼:

public void SetNodes(int rootId) 
{ 
    foreach (T root in _nodeList.Where(i => i.ParentID == rootId)) 
    { 
     _tree.Nodes.Add(root); 
     addBrowserItems(root); 
    } 
} 

private void addBrowserItems(T parentNode) 
{ 
    foreach (T child in _nodeList.Where(i => i.ParentID == parentNode.ItemID)) 
    { 
     parentNode.Nodes.Add(child); 
     addBrowserItems(child); 
    } 
} 
+1

你的樹有多深? – Aliostad

+1

@Aliostad - 讓我想起了一首評論的歌曲。 – ThePower

+0

什麼歌?我可能知道.... – Aliostad

回答

2

OK,所以亨克得到它,有一個週期。

我有2個單獨的文件夾項目和報表項目填充樹視圖 - 我在兩個ID中使用身份列 - 身份被複制一個文件夾,同時具有另一個文件夾和報表項作爲兒童。

我剛剛添加了一個檢查,只調用文件夾項遞歸,現在它完美的工作。

我知道這是一個愚蠢的週五錯誤。

感謝您的幫助!