【问题标题】:Only last statement being executed within if statement只有最后一条语句在 if 语句中执行
【发布时间】:2014-05-22 13:55:42
【问题描述】:

我有一个在 Visual Studio 2010 中工作的 excel 2010 加载项,我需要用相同的信息填充三个组合框。所以我有一个 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);


            }

        }
    }

我不确定为什么它只填充最后一个组合框。我知道这是正在发生的事情,因为我用 comboBox4 切换了 comboBox6,然后它只填充了 comboBox4。任何帮助都会很棒,在此先感谢!

【问题讨论】:

  • 我认为那是因为您的 item 变量只能在 1 个组合框或类似的东西中。
  • 如果我为每个组合框创建一个不同的变量/项目对象?
  • 我不确定,但你可以试试。我不知道这是做什么的: RibbonDropDownItem 但我认为这使得该项目只能分配给 1 个框尝试使用断点或类似的东西每隔几秒钟将项目分配给另一个组合框,以便您检查。

标签: c# combobox vsto excel-2010


【解决方案1】:

正如 cmets 所建议的,您遇到了对象引用问题。

这样重写你的添加代码:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多