2017-01-02 4 views
0

メインスレッド(Windowsフォーム)をブロックしないようにTreeNodeコレクションを設定するスレッドが1つあります。だから私は、これらの線でTreeView.Nodes.Addコマンドを呼び出す:treeviewの最初の項目は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()); 
      } 

     } 

を、私はこれを得た:私は最初のヌル要素を望んでいない

enter image description here

。どのように私はこれを通過することができますか?

+3

'ツリーノードラシーン=新しいツリーノード()上記のようにルートに設定されたデフォルトのノード。 TreeNode NET = racine.Nodes.Add( "Net"); 'これは空ではありませんが空にしますか?私には意味がありません –

+1

あなたがそれを望まないなら、「racine」ノードを投げ捨ててください。 'NET'ノードのみを使用してください。 –

+0

ああはい、それは愚かでした。ありがとう –

答えて

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

関連する問題