2012-05-29 142 views
0

我在我的C#項目(Windows窗體)中使用TreeView,我有一個問題(顯然:P)。我像這樣填充我的TreeView:C#爲什麼SelectedNode.Tag爲空?

void RefreshTreeView() 
{ 
    treeView1.Nodes.Clear(); 
    for (int i = 0 ; i < categories.Count ; ++i) 
    { 
     treeView1.Nodes.Add(categories[i].name); 
     for (int j = 0 ; j < categories[i].questions.Count ; ++j) 
     { 
      treeView1.Nodes[i].Nodes.Add("Pytanie nr " + categories[i].questions[j].number.ToString() 
       + " za " + categories[i].questions[j].points.ToString() + " pkt. [" 
       + (categories[i].questions[j].used ? "Przeczytane" : "Nieprzeczytane") + "]"); 
      treeView1.Nodes[i].Tag = categories[i].questions[j]; // A 
     } 
    } 
} 

在上面標有「A」的行中,我將一個Question對象附加到Node的標籤。它似乎在節目作爲以後工作,我能找回我的問題對象是這樣的:

((Question)treeView1.Nodes[0].Tag).number 

但我想要得到的當前選擇節點的標籤。我試圖這樣做: ((Question)treeView1.SelectedNode.Tag).number 但它不起作用(標籤爲空)。我究竟做錯了什麼?以及如何獲取當前選擇的節點標籤?

+0

我認爲它,因爲它是空返回null標籤。在你的程序中還有其他的東西,要麼將它設置爲null,要麼將其設置爲期望值。或者你正在訪問一個不同於你打算訪問的對象的地方。總之'SelectedNode'返回一個'TreeNode'對象,就像'Nodes [x]'返回一樣。 –

+0

另請參見:asp.net或winforms? –

回答

3

treeView1.Nodes[i].Tag是父節點的標籤。

你可能要設置的子節點,這是treeView1.Nodes[i].Node[j].Tag