[英]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.