所以我必须在内容的丝带,可以被用来同时改变一个下拉菜单。 Outlook还乐意让我'添加'或'插入'项目,只要我不添加超过1项。添加项目RibbonDropDown在运行时
如果我尝试,我会被告知,该指数超出范围,而不是扩大上限为我。
我觉得,如果我将它插入代码的设计部分的集合,它会正常工作,但设计师代码只运行一次,除非我处置色带并重新创建它。
关于我如何能得到这个工作
所以我必须在内容的丝带,可以被用来同时改变一个下拉菜单。 Outlook还乐意让我'添加'或'插入'项目,只要我不添加超过1项。添加项目RibbonDropDown在运行时
如果我尝试,我会被告知,该指数超出范围,而不是扩大上限为我。
我觉得,如果我将它插入代码的设计部分的集合,它会正常工作,但设计师代码只运行一次,除非我处置色带并重新创建它。
关于我如何能得到这个工作
一般来说任何的想法,VSTO要你完整地描述你需要一个时间的UI元素,你问他们的第一次(通过GetCustomUI)。
我碰到类似probs与VSTO前,关于它周围的唯一合理的方法,我发现是预填充(通过设计)所有你可能需要的元素(让我们说10个项目在下拉列表)。
然后,编程隐藏或显示这些项目,并更新其标题和其他属性在必要时,而你的插件运行。
这样一来,你从来没有动态添加或删除任何东西。
尝试使用功能区图库。我已经能够用少
foreach (string s in list)
{
RibbonDropDownItem item = new RibbonDropDownItem();
item.Label = s;
rGallery.Items.Add(item);
}
其中rGallery是RibbonGallery在运行时对其进行修改。
我不认为有必要将RibbonGallery替换为DropDown - 您的方法与DropDown一样可行。请参阅sadanand sudeer的回答。 – 2012-03-04 16:23:16
尝试以下操作:
RibbonDropDownItem item = this.Factory.CreateRibbonDropDownItem();
item.Label = "Text";
combo.Items.Add(item);
答案看起来不错,但你能提供一些描述吗?这将是非常有用的! – 2012-11-21 14:37:38
jeds,你的做法不符合 “新” 的工作。你必须使用“Globals.Factory.GetRibbonFactory()。CreateRibbonDropDownItem()”。否则,你是对的,你的方法在RibbonGallery中效果很好。
这种方法也有一个下拉的伟大工程。我仍然经常冲突使用哪一个...
但是,除了那些2个对象(下拉和RibbonGallery),我相信drventure是正确的。您只需提前提取对象并根据需要使用它们。
您也可以使用XML功能区,但这会产生更大的麻烦(至少在我的用例中)。
我从来没有想过这样,谢谢drventure! – CodeMinion 2011-04-19 22:02:38
没有问题。这有点怪异和骇人听闻,它可以使特定类别的功能有点困难,但据我所知,这是你唯一的选择。 – DarinH 2011-04-21 15:38:14
如果我没有弄错,这个答案显然是错误的。查看其他答案。 – 2012-03-04 16:21:50