2015-08-28 104 views
0

在我的TreeView,我的幾個值,尤其是這樣的結構:如何檢查哪個孩子選擇

Nations -> Championships (child of each nation) -> Teams (childs of each championship). 

對於國家這是我執行,其執行特定任務的方法的根節點,該同樣的冠軍,但是,我怎麼能檢查用戶是否選擇了團隊?那麼冠軍的孩子呢?

其實我這樣做:

TreeViewItem rootNode = (TreeViewItem)e.NewValue; 
if (rootNode.Parent is TreeView) 
{ 
    soccerSeason.getChampionshipsForTeams(e); 
} 
else 
{ 
    teams.getTeam(e); 
} 

這個工作只爲國家和冠軍,我想執行選擇爲每個團隊的另一種方法,我可怎麼辦呢?因爲其實如果我選擇一個冠軍的孩子,運行的方法是getTeam

+0

在你的東西,你的調用處理功能之前,你可以檢查的深度:rootNode.SelectedNode.Level - 然而,你有一些其他的遍歷TreeView的代碼?你所展示的不是遍歷節點。 – mjw

+0

你能告訴我一個例子嗎? – Bender

+0

這裏是如何遍歷TreeView中的節點的示例:http://stackoverflow.com/questions/19691286/how-to-iterate-through-all-nodes-of-a-treeview-control-c-sharp - - 這通常是用遞歸完成的,一旦你設法收集樹中的所有節點,就可以應用我上面的第一個建議來檢查深度(node.Level)以確定要使用的處理函數(Nations = depth 1 ,冠軍=深度2,球隊=深度3) – mjw

回答

0

我覺得你可以做這樣的球隊:

TreeViewItem rootNode = (TreeViewItem)e.NewValue; 
if (rootNode.Parent is TreeViewItem 
      && (rootNode.Parent as TreeViewItem).Parent is TreeView) 
{ 
       //it's team do something 
} 
+0

不,這是爲了獲得冠軍而不是球隊 – Bender

+0

var parent = rootNode.Parent; object pparent; 如果(家長是樹型視圖 &&(pparent =(母公司爲樹型視圖).Parent)是樹型視圖 &&(pparent爲樹型視圖).Parent是TreeView控件) {// 它的團隊做一些 } – Andrey