2014-05-22 136 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一个新实例每次添加的每一个组合框。