2016-10-11 2 views
1

콤보 상자 항목을 동적으로 추가하는 방법은 무엇입니까?VSTO 리본 콤보 상자 동적으로 항목 추가

나는 OnChange Call Back 이벤트 중에 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 나중에 시도했지만 Ribbon1 null입니다. –

+1

Office 관점에서 보면 XML없이 리본을 만들 수있는 방법이 없습니다. VSTO, COM 추가 기능 또는 VBA를 사용하는 경우에도 항상이 Ribbon.xml이 필요합니다. VSTO 리본 디자이너는이 과정을 더 쉽게 만드는 방법 일뿐입니다. XML 관점에서 아이템으로 채워지는 콤보 상자를 얻는 두 가지 방법이 있습니다. 항목이 정적이고 변경되지 않으면 ''에'getItemCount/getItemID/getItemLabel'을 사용합니다. 그러나 항목이 런타임 중에 변경되면 ''대신''을 사용해야합니다. 'getContent' 안에'

'을 빌드하십시오. – haindl

답변

0

VISTO 콤보 상자에

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"; 
    } 
} 
관련 문제