`

TreeView控件操作开发篇之(三)

    博客分类:
  • C#
 
阅读更多
1,树控件的上下左右移动。将此组件放到TreeView的keyup事件中,即可看到效果

#region "控制树节点移动,向左右上下"

        /// <summary>
        /// 控件树节点移动
        /// </summary>
        /// <param name="Tv">TreeView控件</param>
        /// <param name="e">TreeView的按键事件</param>
        public void MoveSelectedNode(TreeView Tv,KeyEventArgs e)
        {
            if (Tv.SelectedNode==null)
            {
                return;
            }
            if (e.KeyCode==Keys.Up && e.Control==true)
            {
                TreeNode selNode = Tv.SelectedNode; //当前选中的节点
                TreeNode tempNode =(TreeNode)Tv.SelectedNode.Clone();

                if (selNode.PrevNode == null)
                {
                    return;
                }
                else
                {
                    if (selNode.Parent == null) //表示一级节点
                    {
                        Tv.Nodes.Insert(selNode.Index - 1, tempNode);
                        selNode.Remove();
                        Tv.SelectedNode = tempNode;
                    }
                    else
                    {
                        selNode.Parent.Nodes.Insert(selNode.Index - 1, tempNode);
                        selNode.Remove();
                        Tv.SelectedNode = tempNode;
                    }
                }
            }
            else if (e.KeyCode==Keys.Down && e.Control==true)
            {
                 TreeNode selNode = Tv.SelectedNode; //当前选中的节点
                 TreeNode tempNode =(TreeNode)Tv.SelectedNode.Clone();

                 if (selNode.NextNode==null)
                 {
                     return;
                 }
                 if (selNode.Parent == null) //表示一级节点
                 {
                     Tv.Nodes.Insert(selNode.Index + 2, tempNode);
                 }
                 else
                 {
                     selNode.Parent.Nodes.Insert(selNode.Index + 2, tempNode);
                 }
                 selNode.Remove();
                 Tv.SelectedNode = tempNode;
            }
            else if (e.KeyCode == Keys.Left && e.Control==true)
            {

                TreeNode selNode = Tv.SelectedNode; //当前选中的节点
                TreeNode tempNode = (TreeNode)Tv.SelectedNode.Clone();

                if (selNode.Parent==null)//表示一级节点
                {
                    return;
                }
                if (selNode.Parent.Parent == null) //表示是三级节点
                {
                    Tv.Nodes.Add(tempNode);

                }
                else
                {
                    selNode.Parent.Parent.Nodes.Add(tempNode);

                }
                selNode.Remove();
                Tv.SelectedNode = tempNode;
            }
            else if (e.KeyCode==Keys.Right && e.Control==true)
            {
                
                TreeNode selNode = Tv.SelectedNode; //当前选中的节点
                TreeNode tempNode = (TreeNode)Tv.SelectedNode.Clone();
                if (selNode.NextNode==null)
                {
                    return;
                }
                selNode.NextNode.Nodes.Insert(0, tempNode);
                selNode.Remove();
                Tv.SelectedNode = tempNode;
            }
        }
        #endregion


2.查找遍历树节点,三种方法

      
  #region "查找遍历树节点"

        /// <summary>
        /// 查找遍历树节点,根据节点名称
        /// </summary>
        /// <param name="Tv">要查找的树</param>
        /// <param name="NodeName">查找的树的节点名称</param>
        /// <returns>TreeNode[]</returns>
        public TreeNode[] FindTreeNodeFromNodeName(TreeView Tv, string NodeName)
        {
            if (Tv.Nodes!=null)
            {
                 return Tv.Nodes.Find(NodeName, true);
            }
            return null;
        }

        /// <summary>
        /// 查找遍历树节点,根据树节点路径
        /// </summary>
        /// <param name="Tv">要查找的树</param>
        /// <param name="NodeFullPath">查找树的节点路径</param>
        /// <returns></returns>
        public TreeNode FindTreeNodeFromNodePath(TreeView Tv, string NodeFullPath)
        {
            string tempPath = string.Empty;
            if (NodeFullPath.LastIndexOf("\\") > 0) //节点0//节点3//节点8
            {
                tempPath = NodeFullPath.Substring(NodeFullPath.LastIndexOf("\\") + 1);
            }
            else
            {
                tempPath = NodeFullPath;
            }
            TreeNode[] Node = FindTreeNodeFromNodeName(Tv, tempPath);
            foreach (TreeNode aNode in Node)
            {
                if (aNode.FullPath == NodeFullPath)
                {
                    return aNode;
                }
            }
            return null;

        }

        /// <summary>
        /// 查找遍历树节点,根据树节点tag
        /// </summary>
        /// <param name="Tv">要查找的树</param>
        /// <param name="tag">要查找的tag值</param>
        /// <returns></returns>
        public TreeNode[] FindTreeNodeFromNodeTag(TreeView Tv, string tag)
        {
            try
            {
                TreeNode[] tNode = null;
                if (Tv == null && Tv.Nodes.Count == 0)
                {
                    return null;
                }
                System.Collections.ArrayList aList = new System.Collections.ArrayList();

                foreach (TreeNode node in Tv.Nodes)
                {
                    ForTreeNode(node, tag, ref aList);
                }
                tNode = new TreeNode[aList.Count];

                for (int i = 0; i < aList.Count; i++)
                {
                    tNode[i] = (TreeNode)aList[i];
                }

                return tNode;
            }
            catch
            {
                return null;
            }
        }

        /// <summary>
        /// 递归树的节点
        /// </summary>
        /// <param name="node">要遍历的节点</param>
        /// <param name="tag">查找的Tag值</param>
        /// <param name="aList"></param>
        private void ForTreeNode(TreeNode node, string tag, ref System.Collections.ArrayList aList)
        {
            if (node.Tag!=null && node.Tag.ToString()==tag)
            {
                aList.Add(node);//将节点添加到数组中
            }
            foreach (TreeNode iNode in node.Nodes)
            {
                ForTreeNode(iNode,tag,ref aList);
            }
        }
        #endregion


分享到:
评论

相关推荐

    Treeview控件的用法

    这篇博客文章,通过链接,详细讲解了`TreeView`控件的使用方法,主要涉及以下几个关键知识点: 1. **基本概念**:`TreeView`控件由一系列的`TreeNode`对象组成,每个`TreeNode`代表一个层级。根节点通常表示顶层...

    TreeView控件工具

    在Web开发中,TreeView控件工具是构建这些交互式树状视图的关键组件。本篇文章将深入探讨TreeView控件的相关知识,以jQuery Treeview为例进行详细解析。 首先,TreeView控件的基本功能包括展开、折叠节点,以及通过...

    TreeView控件的用法

    本篇将详细介绍TreeView控件的基本用法,以及如何在实际开发中有效利用它。 **一、TreeView控件的基本元素** 1. **节点(Node)**:TreeView中的基本单位,可以包含子节点,形成层级结构。每个节点通常由一个文本...

    使用TreeView控件设计OA办公系统的导航

    本篇文章将深入探讨如何使用TreeView控件在VS2005中设计OA办公系统的导航。 1. **TreeView控件介绍** TreeView控件是ASP.NET提供的一种用于显示层次结构数据的控件,它可以模拟Windows操作系统中的文件资源管理器...

    treeView控件实现拖放操作(2.0)

    在Windows Forms开发中,`TreeView`控件是一个常用的组件,用于展示层次化的数据结构,例如文件系统、组织结构等。本篇文章将详细讲解如何在C#的WinForms环境中,利用.NET Framework 2.0实现`TreeView`控件的拖放...

    treeview控件

    Treeview控件是Windows应用程序开发中常用的一种图形用户界面(GUI)组件,它通常用于显示层级结构的数据,如文件系统、组织结构或者数据库中的树状数据。在本篇中,我们将深入探讨Treeview控件的功能、特性以及如何...

    实现右键菜单编辑功能treeview控件

    在.NET开发中,TreeView控件是一个常用的数据呈现组件,它以树形结构显示数据,常用于网站或应用程序的导航和信息展示。实现右键菜单编辑功能对于增强用户体验和交互性非常关键。本篇将深入探讨如何在TreeView控件中...

    .NET treeview控件使用

    本篇将详细讲解如何使用.NET TreeView控件,并结合MySQL数据库进行数据交互。 一、TreeView控件基础 1. 添加TreeView控件:在Visual Studio的设计界面中,从工具箱选择TreeView控件并将其拖放到窗体上。也可以通过...

    C#TreeView控件的使用

    1. **TreeView控件的基本概念** `TreeView`控件由一系列`TreeNode`对象组成,每个`TreeNode`代表树结构中的一个节点。节点可以有父节点和子节点,形成层级关系。`TreeView`控件提供了丰富的事件和方法,便于操作...

    C#Combox与Treeview组合控件

    总之,通过巧妙地结合C#中的ComboBox和TreeView控件,我们可以创建出具有层次感的用户界面,使用户能更直观、方便地浏览和操作层次结构的数据。这种技术在各种应用场景中都十分有用,比如配置管理、文件浏览等。理解...

    Treeview控件

    在Windows应用程序开发中,TreeView控件是一个非常常用且功能强大的组件。它允许用户以树状结构展示数据,常用于文件系统、目录结构或者层次关系的数据表示。本篇将深入探讨`TreeView`控件的使用,以及如何实现描述...

    WindowsFormsApplication1_explanationxsz_treeview_treeview控件_

    在Windows Forms应用程序开发中,`TreeView`控件是一个不可或缺的部分,尤其在需要展现层次结构数据时。本篇文章将深入探讨`TreeView`控件在Windows Forms中的应用及其主要功能。 `TreeView`控件在Windows Forms中...

    TREEVIEW控件

    在实际开发中,`TreeView`控件的使用不仅限于与`DataGridView`的结合,还可以与其他控件配合,如`TabControl`,或者通过拖放操作实现文件管理器的功能。`TreeView`控件的灵活性和强大功能使其成为.NET开发中的重要...

    使用TREEVIEW控件

    在Windows应用程序开发中,TreeView控件是一个非常常用且功能强大的组件。它允许用户以树状结构展示数据,常用于文件系统、目录结构或者层次关系的数据表示。本篇将深入探讨如何使用TreeView控件,以及其在实际应用...

    三种treeview结合数据库的使用

    本篇文章将详细讲解如何将三种不同类型的TreeView控件与数据库结合,以实现数据的动态加载、显示和操作。 首先,我们要理解`TreeView`的基本用法。TreeView是一个可视化的控件,它可以展示一个树形结构,每个节点...

    功能齐备的treeview控件

    在IT领域,treeview控件是一种常见的用户界面元素,它用于以树形结构展示数据,使得用户可以方便地浏览和操作层级关系的数据。本篇将详细探讨dojo库中的treeview控件,以及如何利用它来实现功能完备的树视图。 Dojo...

    ASTreeView 1.3.0(超炫,超酷的Asp.net的Treeview控件)

    在本篇中,我们将深入探讨ASTreeView 1.3.0,一个针对ASP.NET平台优化的高级Treeview控件,它具备了丰富的功能和优秀的用户体验。 **ASTreeView特性** 1. **拖放功能**:ASTreeView 1.3.0 支持节点的拖放操作,...

    c#语言asp.net实现treeview控件读数据库动态生成树

    根据提供的标题、描述、标签及部分内容,我们可以详细探讨如何利用C#与ASP.NET技术实现TreeView控件从数据库中动态生成树形结构。 ### 一、背景介绍 在Web开发中,TreeView 控件是一种非常有用的工具,它可以帮助...

    Winform TreeView控件无限分级绑定数据&获取选项

    Winform TreeView控件基础 `TreeView`控件允许展示一个可折叠和展开的节点树,每个节点可以包含子节点。通过`TreeNode`类,我们可以创建和操作这些节点。`TreeView`控件的常用属性包括: - `Nodes`: 存储根节点的...

    如何:使用TreeView控件实现树结构显示及快速查询

    本篇文章将详细介绍如何利用TreeView控件来高效地实现树结构的显示,并提供快速查找树节点的方法。此外,还将探讨一种通用的树结构数据存储方案,以便于更好地管理和操作这些树状数据。 #### 使用TreeView控件实现...

Global site tag (gtag.js) - Google Analytics