给树加5000个节点,有两种方法,不知道那种性能更高。
  第一种 是单个单个的Add.
          TreeView treeView = new TreeView();            for (int i = 0; i < 5000;i++ )
            {
                TreeNode node = new TreeNode(i.ToString());
                treeView.Nodes.Add(node);
            }第二种 是 Add 一个节点集合
     
            TreeView treeView = new TreeView();             TreeNode[] nodes = new TreeNode[5000];
             for (int i = 0; i < 5000;i++ )
            {
                TreeNode node = new TreeNode(i.ToString());
                nodes[i] =  node;
            }
            treeView .Nodes.AddRange(nodes);
            少量数据的话就可以不考虑,但是如果数据超过万,那该如何取舍。。类似的问题 也存在ListBox,ListView == 一系列控件
哪位高手能帮我解开谜团

解决方案 »

  1.   

    大量节点,自然是使用AddRange。
      

  2.   

    调用
    CreateTable();
    CreateTree();private DataTable dtTree = null;
            private DataView dv = null;
            private void CreateTable()
            {
                OracleConnection conn = new OracleConnection("Data Source=orcl;User ID=todai;Password=todai");
                conn.Open();
                string sss = "Select DEPTID,DEPTNAME,PARENT_DEPT_ID from HR_DEPARTMENT";
                OracleDataAdapter kkk = new OracleDataAdapter(sss, conn);
                DataSet ds = new DataSet();
                kkk.Fill(ds);
                dtTree = ds.Tables[0];
            }
            private void CreateTree()
            {
                dv = dtTree.DefaultView;
                dv.Sort = "PARENT_DEPT_ID ASC";
                //dv.Sort = "TypeParentID ASC"; 
                DataRowView[] arrDRV = dv.FindRows(0);
                if (arrDRV.Length == 0) return;
                TreeNode tnNew = null;
                foreach (DataRowView drv in arrDRV)
                {
                    tnNew = treeComboBox1.Nodes.Add(drv.Row["DEPTNAME"].ToString());
                    tnNew.Tag = drv.Row["DEPTID"].ToString();
                    CreateTreeNode(tnNew);
                }
            }
            private void CreateTreeNode(TreeNode tnParent)
            {
                DataRowView[] arrDRV = dv.FindRows(tnParent.Tag);
                if (arrDRV.Length == 0) return;
                TreeNode tnNew = null;
                foreach (DataRowView drv in arrDRV)
                {
                    tnNew = tnParent.Nodes.Add(drv.Row["DEPTNAME"].ToString());
                    tnNew.Tag = drv.Row["DEPTID"].ToString();
                    CreateTreeNode(tnNew);
                }
            }我貌似用的是递归。