Click here to Skip to main content
15,906,947 members
Home / Discussions / C#
   

C#

 
GeneralRe: Speed up Treeview Pin
DaveyM6920-Sep-07 11:13
professionalDaveyM6920-Sep-07 11:13 
AnswerRe: Speed up Treeview [modified] Pin
Scott Dorman20-Sep-07 10:56
professionalScott Dorman20-Sep-07 10:56 
GeneralRe: Speed up Treeview Pin
Pete O'Hanlon20-Sep-07 11:19
mvePete O'Hanlon20-Sep-07 11:19 
GeneralRe: Speed up Treeview Pin
Scott Dorman20-Sep-07 11:37
professionalScott Dorman20-Sep-07 11:37 
GeneralRe: Speed up Treeview Pin
DaveyM6920-Sep-07 11:43
professionalDaveyM6920-Sep-07 11:43 
AnswerRe: Speed up Treeview Pin
DaveyM6920-Sep-07 11:31
professionalDaveyM6920-Sep-07 11:31 
GeneralRe: Speed up Treeview Pin
Scott Dorman20-Sep-07 18:26
professionalScott Dorman20-Sep-07 18:26 
GeneralRe: Speed up Treeview Pin
DaveyM6921-Sep-07 1:05
professionalDaveyM6921-Sep-07 1:05 
Thanks for your efforts Scott. Unfortunately, it actually adds 600ms in the simple example I used.

Created this below, a form with 2 treeviews a listbox and a button.

I think it's just the .net treeview control is just slow period! Unfortunately it's the only control that will suffice in the real application unless anyone knows a better (possibly free?) one.

Thanks for everyones time anyway.

public static TreeNode Build()
        {
            TreeNode mainNode = new TreeNode("MainNode");
            for (int i = 0; i <= 5000; i++)
            {
                TreeNode childNode = new TreeNode("ChildNode" + i.ToString());
                TreeNode subNode = new TreeNode("SubNode");
                childNode.Nodes.Add(subNode);
                mainNode.Nodes.Add(childNode);
            }
            return mainNode;
        }

        public static void Build(ref TreeView treeView)
        {
            TreeNode mainNode = new TreeNode("MainNode");
            List<TreeNode> childNodes = new List<TreeNode>();
            for (int i = 0; i <= 5000; i++)
            {
                TreeNode childNode = new TreeNode("ChildNode" + i.ToString());
                TreeNode subNode = new TreeNode("SubNode");
                childNode.Nodes.Add(subNode);
                childNodes.Add(childNode);
            }
            treeView.Nodes.Add(mainNode);
            treeView.Nodes[0].Nodes.AddRange(childNodes.ToArray());
            //The suggested code used the following line which missed out the mainNode but no performance difference the above
            //treeView.Nodes.AddRange(childNodes.ToArray());
        }

        private void button1_Click(object sender, EventArgs e)
        {
            treeView1.Nodes.Clear();
            treeView2.Nodes.Clear();
            listBox1.Items.Clear();
            DateTime dtBuild1Start;
            DateTime dtBuild1End;
            TimeSpan tsBuild1;
            DateTime dtBuild2Start;
            DateTime dtBuild2End;
            TimeSpan tsBuild2;
            Application.DoEvents();

            //Takes around 2100 ms
            dtBuild1Start = DateTime.Now;
            TreeNode MainNode = Build();
            //Commenting out the following line reduces to around 15 ms
            treeView1.Nodes.Add(MainNode);
            dtBuild1End = DateTime.Now;
            tsBuild1 = dtBuild1End - dtBuild1Start;
            listBox1.Items.Add("Build1 in " + tsBuild1.TotalMilliseconds.ToString() + " milliseconds");

            //Takes around 2700 ms
            dtBuild2Start = DateTime.Now;
            Build(ref treeView2);
            dtBuild2End = DateTime.Now;
            tsBuild2 = dtBuild2End - dtBuild2Start;
            listBox1.Items.Add("Build2 in " + tsBuild2.TotalMilliseconds.ToString() + " milliseconds");
        }

GeneralRe: Speed up Treeview Pin
Scott Dorman21-Sep-07 4:49
professionalScott Dorman21-Sep-07 4:49 
GeneralRe: Speed up Treeview Pin
Pete O'Hanlon21-Sep-07 9:12
mvePete O'Hanlon21-Sep-07 9:12 
GeneralRe: Speed up Treeview Pin
DaveyM6921-Sep-07 3:36
professionalDaveyM6921-Sep-07 3:36 
GeneralRe: Speed up Treeview Pin
Scott Dorman21-Sep-07 4:51
professionalScott Dorman21-Sep-07 4:51 
GeneralRe: Speed up Treeview Pin
DaveyM6921-Sep-07 5:50
professionalDaveyM6921-Sep-07 5:50 
GeneralRe: Speed up Treeview Pin
DaveyM6921-Sep-07 7:55
professionalDaveyM6921-Sep-07 7:55 
GeneralRe: Speed up Treeview Pin
Scott Dorman21-Sep-07 8:06
professionalScott Dorman21-Sep-07 8:06 
GeneralRe: Speed up Treeview Pin
igetorix11-May-08 5:49
igetorix11-May-08 5:49 
QuestionDataTable does not contain definition for 'Controls'???? Pin
ss.mmm20-Sep-07 8:43
ss.mmm20-Sep-07 8:43 
AnswerRe: DataTable does not contain definition for 'Controls'???? Pin
Dave Kreskowiak20-Sep-07 9:09
mveDave Kreskowiak20-Sep-07 9:09 
GeneralRe: DataTable does not contain definition for 'Controls'???? Pin
ss.mmm20-Sep-07 9:30
ss.mmm20-Sep-07 9:30 
AnswerRe: Data on displaying on separate forms Pin
Dave Kreskowiak20-Sep-07 8:55
mveDave Kreskowiak20-Sep-07 8:55 
QuestionCurrency web services or other methods? Pin
udikantz20-Sep-07 7:56
udikantz20-Sep-07 7:56 
AnswerRe: Currency web services or other methods? Pin
Ravi Bhavnani20-Sep-07 10:33
professionalRavi Bhavnani20-Sep-07 10:33 
GeneralRe: Currency web services or other methods? Pin
udikantz20-Sep-07 12:30
udikantz20-Sep-07 12:30 
GeneralRe: Currency web services or other methods? Pin
Ravi Bhavnani21-Sep-07 12:31
professionalRavi Bhavnani21-Sep-07 12:31 
QuestionSql filling question Pin
sajid.salim.khan20-Sep-07 7:49
sajid.salim.khan20-Sep-07 7:49 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.