1
如何動態添加組合框項目?VSTO Ribbon Combo Box動態添加項目
我有一個組合框,我將在OnChange回調事件期間調用API。有一個問題,加載的項目組合框
public void OnChange(Office.IRibbonControl control, string text)
{
var result = GETMembersList("https://restcountries.eu/rest/v1/all");
var members = from member in result
select member;
foreach (var member in members)
{
dsMember mem = new dsMember();
mem.Id = member["numericCode"].ToString();
mem.Name = member["name"].ToString();
RibbonDropDownItem item = Globals.Factory.GetRibbonFactory().CreateRibbonDropDownItem();
item.Label = mem.Name;
**cmbMembers.Items.Add(item);** ?? //problem here, cant access the combo box
}
Ribbon.xml
<?xml version="1.0" encoding="UTF-8"?>
<customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="tabTest" label="TEST">
<group id="grpTest">
<comboBox id="cmbMembers" label="Users" showImage="false"
onChange="OnChange"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
你試過了嗎?Globals.Ribbons.Ribbon1.cmbMembers.Items.Add(item);'? – haindl
@haindl亞我試過了,但Ribbon1爲空。 –
從Office的角度來看,如果沒有XML,就沒有辦法創建Ribbons。無論你使用VSTO,COM插件還是VBA,你總是需要這個Ribbon.xml。 VSTO ribbon設計師實際上只是使這個過程更簡單的一種方法。從XML的角度來看,有兩種方法可以獲得裝滿項目的組合框。如果項目是靜態的並且不改變,那麼你只需在''上使用'getItemCount/getItemID/getItemLabel',但是如果項目在運行期間改變了,那麼你必須使用''而不是''並在'getContent'內建立'