Laden...

Große Datenmenge in Treeview füllen dauert (zu) lange

Erstellt von robmir vor 12 Jahren Letzter Beitrag vor 12 Jahren 970 Views
R
robmir Themenstarter:in
155 Beiträge seit 2005
vor 12 Jahren
Große Datenmenge in Treeview füllen dauert (zu) lange

Hallo,

kann mir jemand vielleicht helfen und einen Tipp geben, um große XML Dateien in die Treeview einzulesen. Ich mache es wie unten aber für große XML Dateien (z.b. 1,5 MB) ist es nicht geeignet, es dauert einfach zu lange.


treeView1.Nodes.Clear();
treeView1.Nodes.Add(new TreeNode(doc.DocumentElement.Name));
TreeNode tNode = new TreeNode();
tNode = treeView1.Nodes[0];
AddNode(doc.DocumentElement, tNode);


private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode)
        {
            XmlNode xNode;
            TreeNode tNode;
            XmlNodeList nodeList;
            int i;

            // Loop through the XML nodes until the leaf is reached.
            // Add the nodes to the TreeView during the looping process.
            if (inXmlNode.HasChildNodes)
            {
                nodeList = inXmlNode.ChildNodes;
                for (i = 0; i <= nodeList.Count - 1; i++)
                {
                    xNode = inXmlNode.ChildNodes[i];
                    inTreeNode.Nodes.Add(new TreeNode(xNode.Name));
                    tNode = inTreeNode.Nodes[i];
                    AddNode(xNode, tNode);
                }
            }
            else
            {
                // Here you need to pull the data from the XmlNode based on the
                // type of node, whether attribute values are required, and so forth.
                inTreeNode.Text = (inXmlNode.OuterXml).Trim();
            }
        }

771 Beiträge seit 2009
vor 12 Jahren

Hi,

du solltest auf jeden Fall das Erzeugen des TreeViews mittels BeginUpdate() und EndUpdate() umrahmen.
Evtl. könntest du es zusätzlich noch ein wenig beschleunigen, wenn du AddRange anstatt einzeln Add benutzt.

R
robmir Themenstarter:in
155 Beiträge seit 2005
vor 12 Jahren

du solltest auf jeden Fall das Erzeugen des TreeViews mittels BeginUpdate() und EndUpdate() umrahmen.

Danke, es funktioniert 👍 so einfach ist es.