繁体   English   中英

在运行时将项目添加到RibbonDropDown

[英]Adding items to RibbonDropDown at runtime

因此,我在功能区中有一个下拉菜单,其中的内容可以在使用时更改。 Outlook也很乐意让我“添加”或“插入”项目,只要添加的项目不超过1个即可。

如果我尝试这样做,则会被告知索引超出范围,而不是扩大我的上限。

我发现,如果将其插入代码的设计器部分的集合中,它将正常工作,但是设计器代码仅运行一次,除非我处理功能区并重新创建它。

关于如何进行此工作的任何想法

尝试这个。 这应该为您工作。

RibbonDropDownItem item 
      = Globals.Factory.GetRibbonFactory().CreateRibbonDropDownItem();
item.Label = "First Name";
this.cbRecent.Items.Add(item);

直接在Ribbon类中尝试以下操作:

RibbonDropDownItem item = this.Factory.CreateRibbonDropDownItem();
item.Label = "Text";
combo.Items.Add(item);

jeds,您的方法不适用于“ new”。 您必须使用“ Globals.Factory.GetRibbonFactory()。CreateRibbonDropDownItem()”。 否则,您是对的,并且您的方法适用于RibbonGallery。

该方法在DropDown上也很好用。 我仍然经常在选择使用哪一个...

但是,除了那两个对象(Dropdown和RibbonGallery),我相信冒险是正确的。 您只需要提前存根对象并根据需要使用它们即可。

您也可以使用XML功能区,但这会带来更大的麻烦(至少在我的用例中)。

尝试使用功能区库。 我已经可以在运行时修改它们了

foreach (string s in list)
{
     RibbonDropDownItem item = new RibbonDropDownItem();                
     item.Label = s;
     rGallery.Items.Add(item);                
}

其中rGallery是RibbonGallery。

一般来说,VSTO希望您一次(第一次通过GetCustomUI)完全描述所需的UI元素。

在使用vsto之前,我遇到过类似的问题,而我发现它的唯一合理方法是(通过设计器)预填充您可能需要的所有元素(因此,下拉列表中有10个项目)。

然后,以编程方式隐藏或显示这些项目,并在外接程序运行时根据需要更新其标题和其他属性。

这样,您就不必动态添加或删除任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM