C# winfrom動態加載TreeView控件


       如果需要給TreeNode綁定自己想要的屬性解決辦法?

       自定義TreeNode 繼承自.net的TreeNode后 添加屬性如:

       public class CustomTrNode : TreeNode
      {
        /// <summary>
        /// 屬性1:控件類型
        /// </summary>
        public object ControlType { get; set; }

        /// <summary>
        /// 屬性2:父ID
        /// </summary>
        public object ParentID { get; set; }
        }

        在 NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)事件中如果 selectedNode==null的時候添加下面代碼賦值  

       if (e.Button == MouseButtons.Left && CustomerTreeView.GetNodeAt(e.X, e.Y) != null)
            { CustomerTreeView.SelectedNode = CustomerTreeView.GetNodeAt(e.X, e.Y); }
            CustomTrNode cuTrNode = (CustomTrNode)e.Node; 

       動態加載TreeView控件

       TreeView tree = new TreeView();
        private void Form1_Load(object sender, EventArgs e)
        {
           //讀取數據庫動態加載
            String connStr = @"Data Source=localhost; Initial Catalog=TreeDB;uid=sa;pwd=123456";
            SqlConnection conn = new SqlConnection(connStr);
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandText = "select * from TestInfo";
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
             DataSet ds = new DataSet();
            try
            {
                  
                sda.Fill(ds, "TestInfo");
            }
            catch (Exception ex)
            {
             
                return;
            }
           
            DataTable dt = ds.Tables[0];
            //初始化根節點
            initParent(dt);

            this.Controls.Add(tree);
            tree.Width = 258;
            tree.Height = 342;
            tree.Left = 282;
            tree.Top = 47;
        }

        //初始化根節點
        void initParent(DataTable dt)
        {
            DataRow[] drs = dt.Select("ParentID=0");
            foreach (DataRow dr in drs)
            {
                TreeNode tn = new TreeNode();
                tn.Text = dr["Name"].ToString();
                tn.Tag = dr["ID"].ToString();
                this.tree.Nodes.Add(tn );
                //初始化下級節點
                initLeaf(dt,tn );
            }

        }

       //初始化下級節點
        void initLeaf(DataTable dt,TreeNode tn)
        {
            DataRow[] drs = dt.Select("ParentID="+tn.Tag as string );
            foreach (DataRow dr in drs)
            {
                TreeNode ctn = new TreeNode();
                ctn.Text = dr["Name"].ToString();
                ctn.Tag = dr["ID"].ToString();
                tn.Nodes.Add(ctn);

                //遞歸調用,不斷循環至葉節點
                initLeaf(dt,ctn);
            }
        }
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM