所以我必須在內容的絲帶,可以被用來同時改變一個下拉菜單。 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