无法在运行时将项添加到下拉列表中

时间:2016-06-17 08:37:09

标签: c# ms-word interop vsto ribbonx

我无法在Ribbon类的运行时向下拉控制器添加项目。 但是,看起来很多主题,甚至msdn使用Globals类属性来解决它。

https://msdn.microsoft.com/en-us/library/bb772088.aspx

这个msdn页面上的第一个例子对我不起作用。我无法访问dropDown或任何其他控制器(按钮,组合框等)。

这是我的.xml文件:

<?xml version="1.0" encoding="utf-8" ?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" >
 <ribbon>
  <tabs>
   <tab id="LFET" label="LFET(new)">
    <group id="Data" label="Data">
     <dropDown id="DropdownList" label="Dropdownlist1" visible="true">
     </dropDown>
    </group>
   </tab>
  </tabs>
 </ribbon>
</customUI>

我正在尝试访问dropDown项目的.cs:

namespace TEST
{
    [ComVisible(true)]
    public class TESTRibbon : Office.IRibbonExtensibility
    {
        private Office.IRibbonUI ribbon;

        public void DropdownList()
        {
            //No way to access my custom ribbon like that.
            Globals.Ribbons.Ribbon.Dropdownlist1.Items.Add();
        }
    }
}

此致

1 个答案:

答案 0 :(得分:1)

我知道我直接操纵色带时遇到了问题。有一件事可能解决它是Invalidate功能区。

或者,您可以将其设置为动态,并使值来自代码。我在我的Word加载项中执行此操作,它工作正常。如果您更改了值,则可能必须在之后使其无效(我在第一次设置后不会更改它。)

<dropDown id="mycustomid" showLabel="false" onAction="onAction" getSelectedItemIndex="getSelected"
          getItemCount="getCount" getItemID="getID" getItemLabel="getLabel" getEnabled="getEnabled"
          screentip="whatever" supertip="whatever" />


public void onAction(IRibbonControl control, string id, int index)
{
}

public int getSelected(IRibbonControl control)
{
}

public int getCount(IRibbonControl control)
{
}

public string getID(IRibbonControl control, int index)
{
}

public string getLabel(IRibbonControl control, int index)
{
}