tree树形控件之循环遍历
2010-02-26 14:05
459 查看
最近在写程序时需要对树形控件进行查询指定文本的内容,因此写了本函数。
//item:待遍历树的根节点,strtext:待查找节点名称
HTREEITEM Ctest2Dlg::FindItem(CTreeCtrl &ctrlTree ,HTREEITEM item, CString strtext)
{
HTREEITEM hfind;
//空树,直接返回NULL
if(item == NULL)
return NULL;
//遍历查找
while(item!=NULL)
{
//当前节点即所需查找节点
if(ctrlTree.GetItemText(item) == strtext)
return item;
//查找当前节点的子节点
if(ctrlTree.ItemHasChildren(item))
{
item=ctrlTree.GetChildItem(item);
//递归调用查找子节点下节点
hfind = FindItem(ctrlTree,item,strtext);
if(hfind)
{
return hfind;
}
else
{
//子节点中未发现所需节点,继续查找兄弟节点
item = ctrlTree.GetNextSiblingItem(ctrlTree.GetParentItem(item));
}
}else
{
//若无子节点,继续查找兄弟节点
item = ctrlTree.GetNextSiblingItem(item);
}
}
return item;
}
//item:待遍历树的根节点,strtext:待查找节点名称
HTREEITEM Ctest2Dlg::FindItem(CTreeCtrl &ctrlTree ,HTREEITEM item, CString strtext)
{
HTREEITEM hfind;
//空树,直接返回NULL
if(item == NULL)
return NULL;
//遍历查找
while(item!=NULL)
{
//当前节点即所需查找节点
if(ctrlTree.GetItemText(item) == strtext)
return item;
//查找当前节点的子节点
if(ctrlTree.ItemHasChildren(item))
{
item=ctrlTree.GetChildItem(item);
//递归调用查找子节点下节点
hfind = FindItem(ctrlTree,item,strtext);
if(hfind)
{
return hfind;
}
else
{
//子节点中未发现所需节点,继续查找兄弟节点
item = ctrlTree.GetNextSiblingItem(ctrlTree.GetParentItem(item));
}
}else
{
//若无子节点,继续查找兄弟节点
item = ctrlTree.GetNextSiblingItem(item);
}
}
return item;
}
相关文章推荐
- TreeList 树形控件 实现带三种状态的CheckBox
- java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
- 树形控件(Tree)的使用
- 基于vue.js 2.0,不使用webpack的nodejs服务,只在浏览器上单独使用在Element UI的Tree树形控件
- 树形控件工具类,实现Tree对象和WebFXTree/WebFXTreeItem的转换
- VisualTreeHelper遍历父子控件的通用方法
- 【Tree 2】树形结构数据呈现的非递归算法(循环)实现
- [JAVASCRIPT][EXTJS]直接用JSON创建树形控件(Ext.tree.TreePanel )
- extjs 树形控件(treePanel)
- delphi循环遍历同类控件或所有控件
- 循环遍历一个控件方法
- flex 树形控件(Tree Control)的使用
- operamasks-ui2.0 +MVC4.0+EF5.0实战之二 功能菜单及树形控件(Tree)
- TreeList 树形控件 实现带三种状态的CheckBox
- 循环遍历控件
- 关于 DevExpress.XtraTreeList.TreeList 树形控件 的操作
- c# winform 循环遍历界面上的所有控件,foreach,Controls,AllowDrop
- Flex的树形控件(Tree Control)中如何通过点击行进行展开/缩进的例子
- Element-Ui组件(二十五)Tree 树形控件
- 循环遍历asp.net repeater控件的方法