您的位置:首页 > 其它

WINFORM树结构的绘制和数据表结构的绘制。

2008-11-29 10:44 211 查看
WINFORM两个树结构的绘制。

支持路径方式和数据表结构方式。

如果是在WEBFROM下修改响应的控件名。

 

调用

 

List<string> Test =new List<string>();

Test.Add(@"C:/");

Test.Add(@"C:/Temp");

Test.Add(@"C:/Temp/A");

GetTree(TreeView1, Test , '//');

 

 

   #region 数据树结构

        /// <summary>

        /// 绘制树

        /// </summary>

        /// <param name="Tv">树控件</param>

        /// <param name="Ds">数据DATASET</param>

        /// <param name="Tagindex">主键INDEX</param>

        /// <param name="Textindex">文本的INDEX</param>

        /// <param name="Parentindex">父目录的INDEX</param>

        /// <param name="ParentStar">父的条件</param>

        public static void GetTree(TreeView MyTreeView,DataTable MyDataTable,int Tagindex,int Textindex,int Parentindex,string ParentStar)

        {

            string ParentText = MyDataTable.Columns[Parentindex].ColumnName;

            DataRow[] T = MyDataTable.Select(ParentText +"='" + ParentStar+"'");         

            for (int i = 0; i != T.Length; i++)

            {

                TreeNode Tn = new TreeNode();

                Tn.Text = T[i][Textindex].ToString();

                Tn.Tag = T[i][Tagindex].ToString();

                MyTreeView.Nodes.Add(Tn);

                LoadNode(Tn, MyDataTable, ParentText, Tagindex, Textindex);

            }

        } 

        /// <summary>

       /// 树的根

       /// </summary>

       /// <param name="tn">上级目录</param>

       /// <param name="ds">数据DATASET</param>

       /// <param name="ParentText">目录名称</param>

       /// <param name="Tagindex">主键ID</param>

       /// <param name="Textindex">名称的主键</param>

        private static void LoadNode(TreeNode Tn, DataTable MyDataTable, string ParentText, int Tagindex, int Textindex)

        {

            DataRow[] T = MyDataTable.Select(ParentText + "='" + Tn.Tag.ToString() + "'");

            for (int i = 0; i != T.Length; i++)

            {

                TreeNode treeN = new TreeNode();

                treeN.Tag = T[i][Tagindex].ToString();

                treeN.Text = T[i][Textindex].ToString();

                Tn.Nodes.Add(treeN);

                LoadNode(treeN, MyDataTable, ParentText, Tagindex, Textindex);

            }

        }

        #endregion

        #region 目录树结构

        /// <summary>

        /// 绘制树

        /// </summary>

        /// <param name="MyTreeView">数控件</param>

        /// <param name="PathList">数据列表 "a,b,c" "b,b,c" "a,b,d"</param>

        /// <param name="SplitChar">分割符号</param>

        public static void GetTree(TreeView MyTreeView, IList<string> PathList, char SplitChar)

        {

            for (int i = 0; i != PathList.Count; i++)

            {

                int Index = 1;

                IList<string> _TempNode = PathList[i].Split(SplitChar);

                if (_TempNode[0].Trim().Length != 0)

                {

                    string NodeID = _TempNode[0];

                    if (MyTreeView.Nodes[NodeID] == null)

                    {

                        MyTreeView.Nodes.Add(NodeID, _TempNode[0]);

                        AddNode(MyTreeView.Nodes[NodeID], _TempNode, ref Index);

                    }

                    else

                    {

                        AddNode(MyTreeView.Nodes[NodeID], _TempNode, ref Index);

                    }

                }

            }

        }

        /// <summary>

        /// 树的根

        /// </summary>

        /// <param name="Tn">上级目录</param>

        /// <param name="_TempNode">数据</param>

        /// <param name="Index">目前索引</param>

        private static void AddNode(TreeNode Tn, IList<string> PathList, ref int Index)

        {

            if (Index > PathList.Count - 1) return;

            if (PathList[Index].Trim().Length == 0)

            {

                Index++;

                if (Index > PathList.Count - 1) return;

            }

            string NodeID = PathList[Index];

            if (Tn.Nodes[NodeID] == null)

            {

                Tn.Nodes.Add(NodeID, PathList[Index]);

                Index++;

                AddNode(Tn.Nodes[NodeID], PathList, ref Index);

            }

            else

            {

                Index++;

                AddNode(Tn.Nodes[NodeID], PathList, ref Index);

            }

        }

     

        #endregion

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  winform null c