나는 Word 2007 응용 프로그램 수준의 추가 기능을 사용하고 있습니다. 지금까지 추가 기능의 리본 인터페이스를 XML로 변환하는 것을 제외하고는 큰 장애물을 경험하지 못했습니다. 내가 작업중인 기능은이 방법으로 만 수행 할 수 있기 때문에 리본 XML을 사용해야합니다. 문제는 리본 XML로 전환하여 Globals.Ribbons를 통해 런타임에 인터페이스에 더 이상 액세스 할 수 없다는 것입니다. 이 링크 http://msdn.microsoft.com/en-us/library/bb772088.aspx은 Visual Designer 리본에 액세스하는 방법을 설명하지만 XML 리본 케이스는 완전히 무시합니다. 특히 레이블과 같은 시각적 컨트롤에 액세스 할 수 있어야합니다. 이것을 어떻게 할 수 있습니까?런타임에 리본 (XML)에 액세스하는 방법이 있습니까?
답변
Globals.Ribbons는 VSTO 디자이너 기능이므로 RibbonXML을 사용하는 경우이 기능이 없습니다. 디자이너가 실제로 커버에서 수행하는 작업은 Office 용 리본 xml을 만든 다음 사무실에서 콜백을하면 VSTO가 해당 컨텍스트 (문서)에 적절한 이벤트 처리기를 발생시킵니다. RibbonXML을 사용하기 때문에 VSTO 리본 디자이너 지원을 완전히 건너 뛸 수 있습니다 (나는 이렇게하는 것이 더 좋으며 더 빨라지고 더 많은 제어가 가능함).
리본 XML을 사용하면 레이블에 onLoad 콜백을 등록해야합니다. 그러면 Office에서 레이블이 될 IRibbonControl을 전달하고 사용자가 할 수있는 일을 제한합니다. 텍스트를 변경하고 싶다면 getText 콜백을 등록한 다음 리본 컨트롤을 무효화해야 getText 콜백이 다시 평가됩니다.
실제로 달성하고 싶은 것에 대한 자세한 정보가 있으면 편리 할 것입니다.) 리본 메뉴를 사용할 때 내 VSTO contrib 프로젝트는 여러분의 삶을 훨씬 더 쉽게 만들어 줄 것이라고 생각합니다. . 그러나 내가하고 싶은 일이 무엇인지 알려 주시면 그에 관한 더 많은 정보를 드릴 수 있습니다. ..
건배, 제이크
언제 Globals.ribbons에 액세스하려고합니까?
기억해 주겠지만, Word의 시작 단계가 끝나기 전까지는 채워지지 않습니다.
너무 빨리 액세스하려고하면 아직 정의 된 리본이 없습니다.
나는 새 문서를 열 때 호출되는 함수이다 Application_DocumentOpen에서 Globals.Ribbons에 액세스하기 위해 노력하고있어. 이것은 비주얼 디자이너 리본에서 작동하는 데 사용되는 것입니다. 그러나 전환 후 XML 리본이 표시되지만 Globals.Ribbons.Count는 항상 0입니다. – AlgolDocks
리본 XML로 작업이 시도하지만 .. 속성 간단한 없었다 나는 Globals.Ribbons에서 Ribbon1 속성에 액세스 할 수 없습니다
그러나, 나는 기본적으로 적절한 타입 캐스트와 관련이있는 다른 솔루션을 생각해 냈습니다. ThisAddIn.cs에서
:
private Microsoft.Office.Core.IRibbonExtensibility ribbonObj;
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
ribbonObj = new Ribbon1(this);
return ribbonObj;
}
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
// Calling the public method TEST() in Ribbon1.cs
//MyNameSpace is the namespace used in your project ie., your project name
((MyNameSpace.Ribbon1)ribbonObj).TEST();
// Calling the public variable flag in Ribbon1.cs
((MyNameSpace.Ribbon1)ribbonObj).flag;
}
- 1. 런타임에 Excel 리본 컨트롤 추가 (VSTO 2005SE)
- 2. 카메라에 액세스하는 다른 방법이 있습니까?
- 3. iPhone : 동일한보기에서 여러 XML에 액세스하는 방법
- 4. 런타임에 swf에서 svg 데이터를 렌더링하는 방법이 있습니까?
- 5. Android에서 런타임에 임의로 리소스를로드하는 방법이 있습니까?
- 6. 런타임에 Android 테마를 변경하는 방법이 있습니까?
- 7. 런타임에 클래스 jar와 패키지를로드하는 방법이 있습니까?
- 8. Python에서 상위 모듈에 액세스하는 방법이 있습니까
- 9. C# : 현재 필드의 이름에 액세스하는 방법이 있습니까?
- 10. 바자 저장소에 프로그래밍 방식으로 액세스하는 방법이 있습니까?
- 11. Android에서 기본 블루투스 설정에 액세스하는 방법이 있습니까?
- 12. C#에서 웹캠에 액세스하는 쉬운 방법이 있습니까?
- 13. Windows에서 gettext가 사용하는 로케일에 액세스하는 방법이 있습니까?
- 14. Java Bean에서 web.xml 속성에 액세스하는 방법이 있습니까?
- 15. 현재 실행중인 스레드를 검색하고 액세스하는 방법이 있습니까?
- 16. 컴퓨터에서 프로그래밍 방식으로 SMS에 액세스하는 방법이 있습니까?
- 17. 내 XML에 문제가 있습니까?
- 18. 내 XML에 오류가 있습니까?
- 19. 내 XML에 문제가 있습니까?
- 20. WPF 리본 컨트롤 - 리본 단추의 내용 변경
- 21. XML에
- 22. XML 리본에서 프로그래밍 방식으로 리본 컨트롤에 액세스
- 23. Office 리본 : XML을 사용하여 리본을 만들 때 컨트롤에 액세스하는 방법
- 24. 런타임시 Delphi 2009 리본 버튼의 checked 속성에 액세스하는 방법은 무엇입니까?
- 25. C# : 런타임에 listview에서 항목의 선택된 색인을 설정하는 방법이 있습니까?
- 26. 자바 애플릿을 런타임에 다운로드 한 위치를 확인할 수있는 방법이 있습니까?
- 27. C#에서 런타임에 스택 변수를 검사 할 수있는 방법이 있습니까?
- 28. 런타임에 argv 및 argc 매개 변수를 설정할 수있는 방법이 있습니까?
- 29. Cocoa/Cocoa Touch에서 런타임에 클래스의 ivars를 동적으로 결정하는 방법이 있습니까?
- 30. 레일에 이미 런타임에 어떤 마이그레이션이 적용되었는지 알아내는 방법이 있습니까?
안녕하세요. Jake. 답변 해주셔서 감사합니다. 나는이 질문을 게시 한 이래로 실제로 많은 연구를했고 나는 같은 결론에 도달했다. 나는 여전히 누군가가 Global.Ribbons에서 인터페이스에 액세스 할 수있는 방법을 찾길 바랬다. 어쨌든 실제로 솔루션을 변환 한 후 RibbonXML 및 콜백을 사용하여 레이블을 변경하고 정보를 표시하며 특정 컨트롤의 가시성을 변경합니다. – AlgolDocks
귀하의 답변/답변 Jake 매우 감사합니다. MSDN은이 부분을 다루지 않습니다. 컨트롤 무효화가 완벽하게 작동했습니다. – Daniel