Pergunta

Para um projeto de pasta de trabalho VSTO, existe uma prática recomendada para recuperar uma referência ao objeto Ribbon da classe ThisWorkbook?

Aqui está o que estou fazendo: na minha aula de fita, criei um método público chamado InvalidateControl(string controlID). Preciso chamar esse método da classe Thatworkbook, com base em quando um determinado evento da pasta de trabalho dispara. Mas a única maneira de ver "obter" uma referência a esse objeto de fita é fazer isso ...

    // This is all in the ThisWorkbook class
    Ribbon ribbon;
    protected override IRibbonExtensibility CreateRibbonExtensibilityObject()
    {
        this.ribbon = new Ribbon();
        return this.ribbon;
    }

... o que parece um pouco fedorento. Quero dizer, eu tenho que substituir CreateRibbonExtensibilityObject() sem considerar; Tudo o que estou fazendo além disso é manter uma referência local à fita para que eu possa chamar métodos contra ela. Mas não parece certo. Existe outra maneira melhor de obter essa referência na classe Thatworkbook? Ou isso é bastante aceitável?

Obrigado!

Foi útil?

Solução

Uma maneira muito mais simples é criar uma variável estática global em algum lugar (por exemplo, no Thisworkbook).

public static Ribbon ribbonref;

Então, no código da classe Ribbon, no manipulador de eventos para o evento de inicialização (acho que o método é chamado Ribbon1_StartUp() Mas não tenho certeza), defina a variável:

private void Ribbon1_StartUp(object sender, EventArg e)
{
    ThisWorkbook.ribbonref = this;
}

(escrito da memória, então pode não estar exatamente certo)

Você pode então usar ribbonref Para acessar sua instância de fita.

Outras dicas

Por favor, veja isso Msdn página que mostra o uso do objeto Globals:

Globals.Ribbons.MyRibbon.MyObject.Text = "test";
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top