2015-08-28 98 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