DevExpress實現(xiàn)TreeList向上遞歸獲取公共父節(jié)點的方法
更新時間:2014年08月06日 17:14:44 投稿:shichen2014
這篇文章主要介紹了DevExpress實現(xiàn)TreeList向上遞歸獲取公共父節(jié)點的方法,需要的朋友可以參考下
有時候在進行C#項目開發(fā)中,需要獲取到公共節(jié)點,如下圖所示:

譬如,當點擊“Test103-2”節(jié)點,其類型是“燈”類型,那怎么獲取到“中心區(qū)域”這個類型是“地域”的公共節(jié)點?對此具體實現(xiàn)方法如下:
主要功能代碼如下:
/// <summary>
/// 向上遞歸,獲取符合條件的父節(jié)點
/// </summary>
/// <param name="node">需要向上遞歸的節(jié)點</param>
/// <param name="conditionHanlder">判斷條件【委托】</param>
/// <returns>符合條件的節(jié)點【TreeListNode】</returns>
public static TreeListNode GetParentNode(this TreeListNode node, Predicate<TreeListNode> conditionHanlder)
{
TreeListNode _parentNode = node.ParentNode;//獲取上一級父節(jié)點
TreeListNode _conditonNode = null;
if (_parentNode != null)
{
if (conditionHanlder(_parentNode))//判斷上一級父節(jié)點是否符合要求
{
_conditonNode = _parentNode;
}
if (_conditonNode == null)//若沒有找到符合要求的節(jié)點,遞歸繼續(xù)
_conditonNode = GetParentNode(_parentNode, conditionHanlder);
}
return _conditonNode;
}
/// <summary>
/// 向上遞歸節(jié)點
/// </summary>
/// <param name="node">需要向上遞歸的節(jié)點</param>
/// <param name="conditionHanlder">委托,返回fasle跳出遞歸;返回true繼續(xù)遞歸;</param>
public static void UpwardRecursiveNode(this TreeListNode node, Predicate<TreeListNode> conditionHanlder)
{
TreeListNode _parentNode = node.ParentNode;
if (_parentNode != null)
{
if (conditionHanlder(_parentNode))
{
UpwardRecursiveNode(_parentNode, conditionHanlder);
}
}
}
/// <summary>
/// 向上遞歸,獲取符合條件的節(jié)點的公共父節(jié)點
/// </summary>
/// <param name="node">操作節(jié)點</param>
/// <param name="checkHanlder">委托</param>
/// <returns>符合條件的節(jié)點</returns>
public static TreeListNode
GetPublicParentNode
(this TreeListNode node, Predicate<TreeListNode> checkHanlder)
{
TreeListNode _publicPNode = null;
TreeListNode _findNode = node.GetParentNode(checkHanlder);//先獲取到條件判斷的自身父節(jié)點
if (_findNode != null)
{
//開始向上遞歸
UpwardRecursiveNode(_findNode, n =>
{
TreeListNode _curpublicNode = n.ParentNode;//獲取當前向上遞歸的父節(jié)點
if (_curpublicNode != null)
{
if (_curpublicNode.Nodes.Count > 1)//若有多個子節(jié)點,則是公共父節(jié)點
{
_publicPNode = _curpublicNode;
return false;//跳出遞歸
}
}
return true;//繼續(xù)遞歸
});
}
return _publicPNode;
}
希望本文所述示例對大家進行類似的C#項目開發(fā)能有所幫助!
相關(guān)文章
WPF/Silverlight實現(xiàn)圖片局部放大的方法分析
這篇文章主要介紹了WPF/Silverlight實現(xiàn)圖片局部放大的方法,結(jié)合實例形式分析了WPF/Silverlight針對圖片屬性操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-03-03
Unity實現(xiàn)游戲傷害數(shù)字顯示HUD的方法
游戲中收到傷害掉血,會有飄動的傷害數(shù)值,本文主要介紹Unity實現(xiàn)游戲傷害數(shù)字顯示HUD的方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
C#使用DateTime.Now靜態(tài)屬性動態(tài)獲得系統(tǒng)當前日期和時間
本文主要介紹了C#使用DateTime.Now靜態(tài)屬性動態(tài)獲得系統(tǒng)當前日期和時間,DateTime結(jié)構(gòu)的Now靜態(tài)屬性只是得到一個系統(tǒng)時間對象,該時間對象不會隨著系統(tǒng)時間的變化而變化,如果要動態(tài)顯示系統(tǒng)時間,可以使用計時器間隔地獲取系統(tǒng)時間對象并顯示,感興趣的可以了解一下2024-01-01

