radtreeviewで選択したノードの親ノードを取得しますか?
-
14-10-2019 - |
質問
このツリービューには、radtreeviewと多くのノードがあります。私がやりたいのは、ノードをクリックしたら、トップの親ノードを取得したいということです。これどうやってするの?構造は次のようです:
- 親
- 子
3.子供の子供
4.選択されたノード
3.子供の子供
3.子供の子供
- 子
「4.Selectedノード」を選択すると、メソッドを3回呼び出すことではなく、トップの親ノードを取得できます。
解決
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.
}
所属していません StackOverflow