只有最后一个语句在if语句中执行

时间:2014-05-22 13:55:43

标签: c# combobox vsto excel-2010

我有一个excel 2010加载项,我正在Visual Studio 2010中工作,我需要用相同的信息填充三个comboBox。所以我有一个for循环,然后我正在填写它们,但只有最后一个填充。

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);


            }

        }
    }

我不确定为什么它只填充最后一个comboBox。我知道这就是发生的事情因为我用comboBox4切换了comboBox6然后它只填充了comboBox4。任何帮助都会很棒,提前谢谢!

1 个答案:

答案 0 :(得分:0)

正如评论所暗示的那样,您有一个对象引用问题。

这样重写您的添加代码:

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

然后对要添加的每个项目重复这个想法,这将为每个组合框的每个添加提供一个新的RibbonDropDownItem实例。