无法填充RibbonMenu

时间:2011-07-04 12:07:00

标签: c# ribbon dynamic-controls

我需要在运行时填充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个小时我一直都被困住了,所以我对任何事情都持开放态度......任何想法?

1 个答案:

答案 0 :(得分:1)

有趣的是,有一个接口,并且有一个同名的类在不同的dll中。如果您查看documentation page here,您会看到有关界面发布的以下信息:

  

<强>名称空间:   Microsoft.Office.Tools.Ribbon

     

<强>装配:   Microsoft.Office.Tools.Common(in   Microsoft.Office.Tools.Common.dll)

在您关联的页面上有:

  

<强>名称空间:   Microsoft.Office.Tools.Ribbon

     

<强>装配:   Microsoft.Office.Tools.Common.v9.0(in   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(),然后使用此调用返回的工厂来创建功能区。