Qual è il modo “corretto” per recuperare un riferimento a un oggetto del nastro?
-
25-09-2019 - |
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!
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";