2014-11-05 57 views
0

我有這個詞典:樹形從字典

public Dictionary<Map, List<Map>> MapStuctuur 
{ 
    get { return new Dictionary<Map, List<Map>>(mapStuctuur); } 
} 

充滿了這些項目:

private Dictionary<Map,List<Map>> mapStuctuur = new Dictionary<Map,List<Map>>(); 



    Map alles = new Map(0, null, null, new DateTime(1, 1, 1), "Alles"); 
    mapStuctuur.Add(alles,new List<Map>()); 
    Map bla1 = new Map(1, null, null, new DateTime(1, 1, 1), "bla1"); 
    Map bla2 = new Map(2, null, null, new DateTime(1, 1, 1), "bla2"); 
    Map bla3 = new Map(3, null, null, new DateTime(1, 1, 1), "bla3"); 
    mapStuctuur[alles].Add(bla1); 
    mapStuctuur[alles].Add(bla2); 
    mapStuctuur[alles].Add(bla3); 
    Map cba1 = new Map(4, null, null, new DateTime(1, 1, 1), "cba1"); 
    Map cba2 = new Map(5, null, null, new DateTime(1, 1, 1), "cba2"); 
    Map cba3 = new Map(6, null, null, new DateTime(1, 1, 1), "cba3"); 
    mapStuctuur.Add(bla1, new List<Map>()); 
    mapStuctuur[bla1].Add(cba1); 
    mapStuctuur[bla1].Add(cba2); 
    mapStuctuur[bla1].Add(cba3); 

當我運行這段代碼,我得到下面的結果。

-alles 
--bla1 
--bla2 
--bla3 

-bla1 
---cba1 
---cba2 
---cba3 

什麼,我想的是,值cba1,CBA2,cba3從ALLES孫子,BLA1

-alles 
----bla1 
--------cba1 
--------cba2 
--------cba3 
----bla2 
----bla3 
+1

你能告訴我們你用來顯示字典到樹視圖的代碼嗎? – deathismyfriend 2014-11-05 16:52:06

+1

您可以更改Map類以包含地圖列表嗎? – juharr 2014-11-05 16:57:26

+0

同上第一條評論。這是從字典到TreeView的轉換,這就是你完全省略的代碼。另外,你爲什麼用字典來表示這棵樹?理想情況下,Map對象本身會知道它的子對象,並且可以形成樹,但是如果不是,你可以用一個容器對象來保存一個「Map」,以及關於子對象的信息(也可以是父對象) 。使用字典可以工作,但它只是使事情變得不可讀,並且很難調試。 – 2014-11-05 17:08:01

回答

1
this.mappen = new List<Map>(DatabaseHelper.GetAllMaps()); 
      this.mappen.ForEach(delegate(Map pI) 
      { 
       pI.Childs = this.mappen.Where(delegate(Map pCh) 
       { 
        return pCh.ParentMap.Mapnr == pI.Mapnr; 

       }).ToList(); 

      }); 

這正確地設置所有的父母。

希望這會有所幫助。