2015-01-14 6 views
0

엑셀 추가 기능에 기능을 추가하여 필요할 때 다른 리본을로드 할 수 있습니다. 내가 XML로 리본을 수출하고 이것이 내가이 리본을 전환하는 방법을 찾을 수 있습니다와 problema 그것을엑셀 리본 주문시

private Microsoft.Office.Core.IRibbonExtensibility ribbonObj; 
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() 
{ 
    DialogResult RibbonToLoad = MessageBox.Show("Yes = V2 No = V3", "Select Version", MessageBoxButtons.YesNo); 
    switch (RibbonToLoad) 
    { 
     case DialogResult.Yes: 
      ribbonObj = new RibbonV2(); 
      return ribbonObj; 
     case DialogResult.No: 
      ribbonObj = new RibbonV3(); 
      return ribbonObj; 
    } 

    return new RibbonV2(); 
} 

를로드하여 노력하고 순간

. Globals. 개체에서 찾을 수 없습니다.

또한 나는 XML로 내 보내지 않고했는데, 어떻게

어떤 생각을 (예를 들어 작업 ... WPF 창에서 버튼을 클릭) 실행하는 동안도 나는 다른 리본의 요구에 부하를 달성 할 수 이거 받아요? 같은 addin에 다른 리본을로드 할 가능성이 있습니다 (단 하나만 존재할 수 있습니다)

답변

1

리본 컨트롤을로드하는 프로세스를 관리 할 수 ​​없습니다. 그러나 런타임에 컨트롤의 가시성을 변경할 수 있습니다. IRibbonUI 인터페이스는 런타임시 가시성을 변경할 수있는 콜백을 트리거 할 수있는 Invalidate 및 InvalidateControl 메서드를 제공합니다 (getVisible).

다음 예제에서 호스트 응용 프로그램을 시작하면 onLoad 이벤트 프로 시저가 트리거되어 리본 UI를 나타내는 객체를 만드는 프로 시저를 호출합니다. 그런 다음 UI의 모든 컨트롤을 무효화 한 다음 UI를 새로 고치는 콜백 프로 시저가 정의됩니다.

<customUI … onLoad=”MyAddInInitialize” …> 

다음 onLoad 이벤트에 대한 콜백 방법 :

Dim MyRibbon As IRibbonUI 

Sub MyAddInInitialize(Ribbon As IRibbonUI) 
    Set MyRibbon = Ribbon 
End Sub 

Sub myFunction() 
    ‘ Invalidates the caches of all of this add-in’s controls 
    MyRibbon.Invalidate()    
End Sub 

당신은 리본에 대한 자세한 내용을보실 수 있습니다은

다음은 사용자 정의 리본을 장착하는 사무실에 대한 XML 마크 업입니다 다음 UI는 다음 MSDN 문서 시리즈에 있습니다.

+0

하지만 ... 곳 목적은 무엇입니까? 귀하의 솔루션을 누른 다음 그것은 단지 하나의 리본이 필요하고 컨트롤 보이기/숨기기와 함께 플레이하는 것 같은가요? – blfuentes

+0

예, 여러 사용자 정의를 추가 할 수 없습니다. IRibbonExtensibility 인터페이스는 한 번 호출됩니다. –

+0

그리고 현재 리본에 요소를 추가 할 수 있습니까? – blfuentes