我在这个树视图中有一个 RadTreeView 和很多节点。我想要做的是,当一个节点单击时,我想获得顶部的父节点。我怎样才能做到这一点?结构是这样的:
- 家长
- Child
3.Child's child
4.selected node
3.Child's child
3.Child's child
- Child
当我选择“4.selected node”时,我希望能够通过调用该方法三次而不是获得顶级父节点。
我在这个树视图中有一个 RadTreeView 和很多节点。我想要做的是,当一个节点单击时,我想获得顶部的父节点。我怎样才能做到这一点?结构是这样的:
当我选择“4.selected node”时,我希望能够通过调用该方法三次而不是获得顶级父节点。
private void radTreeView_SelectionChanged( object sender, Telerik.Windows.Controls.SelectionChangedEventArgs e )
{
// Get a reference to the treeview
Telerik.Windows.Controls.RadTreeView treeView = sender as Telerik.Windows.Controls.RadTreeView;
// Get the currently selected items
ObservableCollection<Object> selectedItems = treeView.SelectedItems;
RadTreeViewItem item = selectedItems[ 0 ] as RadTreeViewItem;
// Get the previous item and the previous sibling item
RadTreeViewItem previousItem = item.PreviousItem;
RadTreeViewItem previousSiblingItem = item.PreviousSiblingItem;
// Get the next item and the next sibling item
RadTreeViewItem nextItem = item.NextItem;
RadTreeViewItem nextSiblingItem = item.NextSiblingItem;
// Get the parent item and the root item
RadTreeViewItem parentItem = item.ParentItem;
RadTreeViewItem rootItem = item.RootItem;
}
我认为整个活动的最后一行主要是您需要的,有关此的更多信息可以在这里找到。然而,这适用于 radtreeview 的 WPF 版本。
我刚刚为您编写了此方法,因为我现在正在使用 Rad Controls 进行大型项目:
public void FindFather(RadTreeNode n)
{
foreach (RadTreeNode node in RadTreeView1.GetAllNodes())
{
if (node.Level == 0 && !node.GetAllNodes().Contains(node))
{
//this is the node that your looking for
//do something with it
Console.Write("this is the Top Parent");
}
}
}
希望你喜欢它兄弟,编码时永远不要放弃
@King A.Majid:我不认为你的逻辑是正确的。那么参数“RadTreeNode n”呢?
我的方法很简单,如下:
public RadTreeNode CwGetTreeNodeTopParent(RadTreeNode nodeToFindTopParent)
{
var parentNode = nodeToFindTopParent.ParentNode;
if (parentNode.Level == 0)
return parentNode;
parentNode = CwGetTreeNodeTopParent(parentNode);
return parentNode;
}
您应该检查节点(即查找最高父节点)以确保它不是最高级别。
例如,我们想要找到 selectedNode 的顶级父节点:
if(selectedNode.Level != 0)
{
var topParent = CwGetTreeNodeTopParent(selectedNode);
//To do something here.
}