2017-01-02 3 views
0

Ich habe einen Thread, der eine TreeNode-Auflistung auffüllen wird, um den Haupt-Thread (Windows-Formular) nicht zu blockieren. So rufe ich durch diese Linie den TreeView.Nodes.Add Befehl:Das erste Element einer Baumansicht ist null

private void generateListeItems() 
     { 
      try 
      { 
       Item_Coll resultSet = connector.command_LIST(); 
       if(mainFormInvoke != null) 
        mainFormInvoke(formProgressBar, -1); 
       TreeNode racine = new TreeNode(); 
       TreeNode NET = racine.Nodes.Add("Net"); 
       TreeNode LON = NET.Nodes.Add("LON"); 
       List<string> devices = new List<string>(); 

       TreeNode lastDevice = null; 
       int lastDevice_index = -1; 
       TreeNode lastDevice_fb = null; 
       int lastDevice_fb_index = -1; 
       int percentage = 0, lastPercentage = 0, treatedItem = 0; 
       int nombreIndex = resultSet.Item.Count<Item>(); 
       foreach (Item index in resultSet.Item) 
       { 
        string[] substring = index.UCPTname.Split('/'); 
        if (lastDevice == null || substring[2] != lastDevice.Text) 
        { 
         lastDevice = LON.Nodes.Add(substring[2]); 
         lastDevice_index++; 
         lastDevice_fb_index = -1; 
        } 

        if (lastDevice_fb == null || substring[3] != lastDevice_fb.Text) 
        { 
         lastDevice_fb = lastDevice.Nodes.Add(substring[3]); 
         lastDevice_fb_index++; 
        } 

        lastDevice_fb.Nodes.Add(substring[4]); 
        dpDictionnary[index.UCPTname] = index; 
        lastPercentage = percentage; 
        percentage = ++treatedItem * (nombreIndex/100); 
        if(percentage != lastPercentage) 
         mainFormInvoke(formProgressBar, 1); 
       } 

       mainFormInvoke((updatingListeInUI)liste.Nodes.Add, racine); 
       mainFormInvoke(consoleWriter,string.Format("Connexion réussie, récupération de {0} éléments", resultSet.Item.Count<Item>())); 
      }catch(SmartServerException e) 
      { 
       mainFormInvoke(consoleWriter, e.ToString()); 
      } 

     } 

Und ich habe dies:

enter image description here

Ich habe nicht das erste Null-Element soll. Wie kann ich das durchmachen?

+3

'TreeNode Racine = new TreeNode() dargestellt; TreeNode NET = racine.Nodes.Add ("Net"); 'Soll das nicht leer sein, aber du machst es leer? macht keinen Sinn für mich –

+1

Werfen Sie diesen 'racine' Knoten weg, wenn Sie es nicht wollen. Verwenden Sie nur den Knoten "NET". –

+0

Oh. Ja, es war dumm. Vielen Dank –

Antwort

0
TreeNode racine = new TreeNode("Root"); 
TreeNode NET = racine.Nodes.Add("Net"); 
TreeNode LON = NET.Nodes.Add("LON"); 

Satz Standardknoten zu root wie oben

Verwandte Themen