Zajmuję się opracowywaniem dodatku Word z własną zakładką Wstążka. Większość mojego rzeczywistego kodu jest zawarta w niektórych klasach usług, które zostają zainicjowane w ThisAddIn_Startup i przypisane do właściwości obiektu singleton ThisAddIn. Mam także detektor zdarzeń, który nasłuchuje zdarzeń schowka, które chciałbym wystawić na resztę kodu jako właściwość tego samego obiektu.Własna wstążka jest ładowana przed ThisAddIn_Startup, ale chciałbym zainicjować pewne rzeczy - najlepsze rozwiązanie?
Problem, na który napotykam, polega na tym, że ładowanie zdarzenia mojego Wstążki jest uruchamiane przed zdarzeniem Startup tego obiektuAdAdIn (nawet jeśli obiekt singleton został już zainicjowany i przypisany do Globals.ThisAddIn). W moim module obsługi zdarzeń Wstążka ładowania chciałbym zainstalować program obsługi tego słuchacza, a także skorzystać z jednej z tych usług. Nie mogę, ponieważ w tym momencie wykonywania programu są one zerowe.
Jakie jest najlepsze rozwiązanie tego problemu? Mogę po prostu zrobić wszystkie te statyczne elementy ThisAddIn i zainicjować je w statycznym konstruktorze, ale to wydaje się błędne, a także niszczy cały punkt zdarzenia Startup (lub obiektu singleton).
Dziwnie, początkowo nie miałem tego problemu, gdy moja Wstążka właśnie dodawała swoje komponenty do wbudowanej karty Dodatków - następnie załadowano zdarzenie uruchomione po uruchomieniu.
(Uwaga: Robię wszystko to w Visual Studio 2012 i przy użyciu projektanta Ribbon).
Właściwie nie używam już zaakceptowanej odpowiedzi powyżej. (Jaka jest odpowiednia odpowiedź na to pytanie? Czy powinienem dodać nowy i przenieść akceptację?) To, co robię, to edytować konstruktor w Ribbon.Designer.cs, aby wywołać metodę "ManualInitialize". Ten kod zawiera wszystko, co nie zależy od ThisAddIn_Startup. Następnie dodajemy inną metodę do pliku Ribbon.cs "FinalStartup", który jest wywoływany przez ThisAddIn_Startup, który zawiera wszystko, co * robi *, zależy od ThisAddIn_Startup. –
Myślę, że powinieneś usunąć zaakceptowaną odpowiedź i niech twoje pytanie pozostanie bez odpowiedzi. Może ten ktoś znajdzie lepszy sposób. – Malick