Frage

Gibt es für ein VSTO -Arbeitsbuchprojekt eine Best Practice, um einen Verweis auf das Ribbon -Objekt aus der Thisworkbook -Klasse zu rufen?

Folgendes mache ich: In meiner Bandklasse habe ich eine öffentliche Methode genannt InvalidateControl(string controlID). Ich muss diese Methode aus der Thisworkbook -Klasse basierend darauf anrufen, wenn ein bestimmtes Ereignis der Arbeitsmappe feuert. Aber der einzige Weg, wie ich einen Hinweis auf dieses Bandobjekt "bekommen" kann, besteht darin, dies zu tun ...

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

... was ein wenig stinkend erscheint. Ich meine, ich muss überschreiben CreateRibbonExtensibilityObject() trotzdem; Alles, was ich darüber hinaus mache, ist, einen lokalen Hinweis auf das Band beizubehalten, damit ich Methoden dagegen aufrufen kann. Aber es fühlt sich nicht richtig an. Gibt es einen weiteren, besseren Weg, um diese Referenz in der Thisworkbook -Klasse zu erhalten? Oder ist das ziemlich akzeptabel?

Vielen Dank!

War es hilfreich?

Lösung

Ein viel einfacherer Weg ist es, irgendwo eine globale statische Variable zu erstellen (z. B. in diesem Workbook).

public static Ribbon ribbonref;

Dann im Code der Ribbon -Klasse im Ereignishandler für das Initialisierungsereignis (ich denke, die Methode wird aufgerufen Ribbon1_StartUp() Aber ich bin mir nicht sicher), setzen Sie die Variable:

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

(Aus dem Speicher geschrieben, ist also möglicherweise nicht genau richtig)

Sie können dann verwenden ribbonref Um auf Ihre Bandinstanz zuzugreifen.

Andere Tipps

Bitte sehen Sie dies Msdn Seite, die die Verwendung des Globals -Objekts anzeigt:

Globals.Ribbons.MyRibbon.MyObject.Text = "test";
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top