Hallo Leute,
ich hab mir ein AddIn für Outlook 2010 gebaut. Soweit alles super. Aber nun habe ich ein Ribbon eingebaut. Erst mit dem Designer und dann nach XML usw. funktioniert alles super hab auch Bilder drauf und der Klick reagiert auch. ABER:
Wenn ich versuche auf einen der Button zuzugreifen funktioniert das einfach nicht.
Ich benutze folgende Funktion um an den Button zu kommen:
ThisRibbonCollection ribbonCollection = Globals.Ribbons[Globals.ThisAddIn.Application.ActiveInspector()];
ribbonCollection.HowardOutlookRibbon.btnStartImport.Enabled = true;
ich habe auch schon die anderen beiden Arten des Zugriffs versucht:
ThisRibbonCollection ribbonCollection = Globals.Ribbons[Globals.ThisAddIn.Application.ActiveExplorer()];
bzw.
Globals.Ribbons.HowardOutlookRibbon.btnStartImport.Enabled = true;
Das Problem ich bekomme immer eine "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt." Exception da immer
HowardOutlookRibbon == null
und auch
ribbonCollection.Count == 0
ist.
Gibts da irgendwie noch nen anderen Weg um an die Buttons zu kommen oder hab ich irgendwas überlesen was ich noch registrieren muss oder so damit ich an die Globals komme?
Vielen Dank
Howard
Okay eine Möglichkeit habe ich gefunden:
Man kann in der XML Datei für das Ribbon für jeden Button bzw. auch für das ganze Ribbon getEnabled eintragen
<button id="btnImport" onAction="btnClick" label="Import starten" size="large" getImage="getImages" getEnabled="GetBtnEnabled" />
Zwar wird die Funktion
public bool GetBtnEnabled(IRibbonControl control){...}
zunächst nur beim erstmaligem Anzeigen ** des Ribbons aufgerufen ABER** wenn man auf Statusänderungen im Programm reagieren will kann man durch Aufruf von
ribbon.Invalidate(); //ribbon ist die Membervari vom Typ IRibbonUI
den erneuten Aufruf der Funktion "erzwingen".
Wenn keiner ne bessere Idee hat würd ich das erstmal so lassen...
Vielen Dank das Ihr mir zugehört habt beim laut denken 😁
Howard