VSTO: Por que é OfficeRibbon.Context nulo?
Pergunta
Estou desenvolvendo meu primeiro suplemento Word 2007, e eu adicionei um OfficeRibbon ao meu projeto. Em um manipulador de clique de botão, eu gostaria de uma referência, quer ao Word.Document
ou Word.Application
atual.
Eu estou tentando obter uma referência através da propriedade OfficeRibbon.Context
, que diz a documentação deve se referir ao objeto Application
atual. No entanto, é sempre null
.
Alguém sabe qualquer
a) se há algo que eu preciso fazer para que OfficeRibbon.Context
aparecer correctamente preenchido?
b) se há alguma outra maneira que eu posso obter uma referência para o aplicativo Word ou documento do Word ativa?
Notas:
-
Eu estou usando VS2008 SP1
-
Os olhares fita como ele tem bem inicializado: A fita renderiza corretamente no Word; I pode pisar o depurador através tanto o construtor e os membros ONLOAD; clique manipuladores botão Executar corretamente.
-
Aqui está a ajuda on-line para esta propriedade ;
OfficeRibbon.Context Propriedade
C#
public Object Context { get; internal set; }
Um objecto que representa a janela Inspector ou instância de aplicação que está associado com esse objecto OfficeRibbon.
Observações
No Outlook, esta propriedade refere-se à janela Inspector em que este OfficeRibbon é exibido.
No Excel, Word e PowerPoint, essa propriedade retorna a instância do aplicativo em que este OfficeRibbon é exibida.
Solução
Eu também encontrei este problema criando um suplemento Excel 2007 usando VS2008 SP1. A solução que eu usei foi para armazenar o aplicativo em uma propriedade internal static
na classe AddIn principal e, em seguida, fazer referência a ela no manipulador de eventos na minha fita:
public partial class ThisAddIn
{
internal static Application Context { get; private set; }
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Context = Application;
}
...
}
public partial class MyRibbon : OfficeRibbon
{
private void button1_Click(object sender, RibbonControlEventArgs e)
{
DoStuffWithApplication(ThisAddIn.Context);
}
...
}
Outras dicas
Comece a partir de:
Globals.ThisAddIn.Application
Enquanto eu não sei muito sobre mudanças no Office modelo de objeto do Word 2007, aqui é a minha explicação usando o conhecimento VBA.
A aplicação é um objeto disponível globalmente. Além disso, Application.ActiveDocument deverá fazê-lo lidar com o documento atual.
Especulando: Como você está tentando adicionar a fita ??p>