1

我需要在运行时使用数据库中的一些数据填充 RibbonMenu 控件。

我把我的抵消:http: //msdn.microsoft.com/en-us/library/microsoft.office.tools.ribbon.ribbonmenu (v=vs.90).aspx

使用代码:

private void PopulateCustomerMenu()
{
    // Add two sub-menus to EmployeeMenu and populate each sub-menu
    // First sub-menu
    RibbonMenu subMenu1 = new RibbonMenu(); //new RibbonMenu(); is underlined red
    subMenu1.Dynamic = true;
    subMenu1.Label = "A - M";
    subMenu1.Items.Add(new RibbonToggleButton()); //new RibbonToggleButton() is as well
    ((RibbonToggleButton)subMenu1.Items.Last()).Label = "Hall, Don";
    subMenu1.Items.Add(new RibbonToggleButton()); //new RibbonToggleButton() is as well
    ((RibbonToggleButton)subMenu1.Items.Last()).Label = "Valdez, Rachel";
    CustomerMenu.Items.Add(subMenu1);

    // Second sub-menu
    RibbonMenu subMenu2 = new RibbonMenu(); //new RibbonMenu(); is as well
    subMenu2.Dynamic = true;
    subMenu2.Label = "N - Z";
    subMenu2.Items.Add(new RibbonToggleButton()); //new RibbonToggleButton() is as well
    ((RibbonToggleButton)subMenu2.Items.Last()).Label = "Robinson, Alex";
    CustomerMenu.Items.Add(subMenu2);
}

我唯一得到的是 Visual Studio 说“错误 1 ​​无法创建抽象类或接口 'Microsoft.Office.Tools.Ribbon.RibbonMenu' C:\Users\Christoffer\Documents\Visual Studio 2010\Projects\OutlookAddIn2\ 的实例OutlookAddIn2\Ribbon1.cs 80 35 OutlookAddIn2 "

在过去的 15 个小时里,我一直被困住,所以我愿意接受任何事情......有什么想法吗?

4

1 回答 1

1

有趣的是,有一个接口和一个类,它们都在不同的 dll 中具有相同的名称。如果您查看此处的文档页面,您会看到有关接口位置的以下信息:

命名空间: Microsoft.Office.Tools.Ribbon

程序集: Microsoft.Office.Tools.Common(在 Microsoft.Office.Tools.Common.dll 中)

在您链接到的页面上有:

命名空间: Microsoft.Office.Tools.Ribbon

程序集: Microsoft.Office.Tools.Common.v9.0(在 Microsoft.Office.Tools.Common.v9.0.dll 中)

您链接到的那个来自 Visual Studio 2007 版(因此链接中的 v=vs90。如果您尝试使用该版本,请确保正确的 dll(Microsoft.Office.Tools.Common.v9.0.dll ) 被您的项目引用,而不是新的 dll (Microsoft.Office.Tools.Common.dll)

如果您想使用新的 dll,那么为了创建菜单或菜单项,您必须根据构建功能区的位置获取RibbonFactory的实例。例如,如果您尝试向您调用的 Word 添加功能区菜单Globals.Factory.GetRibbonFactory(),然后使用此调用返回的工厂来创建您的功能区。

于 2011-07-04T12:15:06.430 回答