Domanda

Per un progetto cartella di lavoro di VSTO, c'è una best practice per il recupero di un riferimento all'oggetto del nastro dalla classe ThisWorkbook?

Ecco quello che sto facendo: Nella mia classe Ribbon, ho creato un metodo pubblico chiamato InvalidateControl(string controlID). Devo chiamare quel metodo della classe ThisWorkbook in base a quando un certo generato l'evento di livello cartella di lavoro. Ma l'unico modo che posso vedere a "ottenere" un riferimento a tale oggetto Ribbon è quello di fare questo ...

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

... che sembra un po 'puzzolente. Voglio dire, devo ignorare CreateRibbonExtensibilityObject() prescindere; tutto quello che sto facendo al di là che è il mantenimento di un riferimento locale al nastro in modo da poter richiamare i metodi contro di essa. Ma non mi sembra giusto. C'è un altro, modo migliore per ottenere che il riferimento nella classe ThisWorkbook? O è piuttosto accettabile?

Grazie!

È stato utile?

Soluzione

Un modo molto più semplice è quello di creare una variabile da qualche parte globale statico (per esempio in ThisWorkbook).

public static Ribbon ribbonref;

Poi nel codice della classe Ribbon, nel gestore di eventi per l'evento di inizializzazione (penso che il metodo viene chiamato Ribbon1_StartUp() ma non sono sicuro), impostare la variabile:

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

(scritto dalla memoria, quindi non può essere esattamente a destra)

Si può quindi utilizzare ribbonref per l'accesso all'istanza del nastro.

Altri suggerimenti

Si prega di consultare la pagina MSDN che mostra l'uso del globals oggetto:

Globals.Ribbons.MyRibbon.MyObject.Text = "test";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top