2016-10-11 3 views
1

コンボボックスアイテムを動的に追加するにはどうすればよいですか?VSTOリボンコンボボックスアイテムを動的に追加する

私はOnChangeコールバックイベント中にAPIを呼び出すコンボボックスを持っています。

<?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> 
+0

'Globals.Ribbons.Ribbon1.cmbMembers.Items.Add(item);'を試したことがありますか? – haindl

+0

@ haindl ya試しましたが、Ribbon1はnullです。 –

+1

Officeの観点から見ると、XMLなしでリボンを作成する方法はありません。 VSTO、COMアドイン、またはVBAを使用する場合でも、常にこのRibbon.xmlが必要です。 VSTOリボンデザイナーは、このプロセスを簡単にする単なる方法です。 XMLの観点から、コンボボックスにアイテムを埋め込むには2通りの方法があります。アイテムが静的で変更されない場合は、 ''に 'getItemCount/getItemID/getItemLabel'を使用しますが、アイテムがランタイム中に変更されている場合は、' 'の代わりに' ' 'getContent'の内部に'

'を作ります。 – haindl

答えて

0

ビストコンボボックスに

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を項目を読み込むに問題を抱えているが、問題があり、私も背後にあるコードから複数の商品を追加しようとしたが、何かが間違っていました。 しかし、既存のアイテムは動的に変更できます。 Ribbon1_Loadイベントで編集を試してください。

public partial class Ribbon1 
{ 
    private void Ribbon1_Load(object sender, RibbonUIEventArgs e) 
    { 
     this.comboBox1.Items[0].Label = "new Lable"; 
    } 
} 
関連する問題