2014-05-22 189 views
0

我有一個在Visual Studio 2010中工作的Excel 2010加載項,我需要用相同的信息填充三個組合框。所以我有一個for循環,然後我將所有的東西填滿,但只有最後一個被填充。只在if語句中執行的最後一條語句

public void tableScheme() 
    { 


     comboBox4.Items.Clear(); 
     comboBox5.Items.Clear(); 
     comboBox6.Items.Clear(); 

     for (int j = 1; j <= schemaTable.Rows.Count; j++) 
     { 


      //string tableColumns = ("["+Convert.ToString(schemaTable.Rows[j - 1][0])+"]"); 
      RibbonDropDownItem item = Globals.Factory.GetRibbonFactory().CreateRibbonDropDownItem(); 
      item.Label = "testTEST"; 




      if (j == schemaTable.Rows.Count) 
      { 
        comboBox4.Items.Add(item); 
        comboBox5.Items.Add(item); 
        comboBox6.Items.Add(item); 



      } 
      else 
      { 
        comboBox4.Items.Add(item); 
        comboBox5.Items.Add(item); 
        comboBox6.Items.Add(item); 


      } 

     } 
    } 

我不知道爲什麼它只填充最後一個組合框。我知道這是發生了什麼,因爲我用comboBox4切換comboBox6,然後它只填充了comboBox4。任何幫助將是偉大的,在此先感謝!

+0

我想這是因爲你的item變量只能在1個combobox或類似的東西。 –

+0

所以,也許如果我爲每個組合框做一個不同的變量/項目對象? – Benny

+0

我不知道,但你可以試試。我不知道這是什麼:RibbonDropDownItem,但我認爲這使得該項目只能分配到1個盒子嘗試使用斷點或類似的東西每隔幾秒將項目分配給另一個組合框,所以你可以檢查。 –

回答

0

正如評論可能建議的那樣,您有一個對象引用問題。

正是如此重寫您的外接代碼:

comboBox4.Items.Add(new RibbonDropDownItem() { Label = "the text" }); 
... 

然後重複這個想法對您要添加的每個項目,這將給你的RibbonDropDownItem一個新實例每次添加的每一個組合框。