我需要在运行时填充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个小时我一直都被困住了,所以我对任何事情都持开放态度......任何想法?
答案 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()
,然后使用此调用返回的工厂来创建功能区。