2016-08-05 10 views
0

Ich habe den EA erstellt in C# hinzufügen, die die Menüs jetzt EA_MenuClick enthält wird aufgerufen, wenn der Menüpunkt angeklickt wird, ich möchte die Windows-Formular anzeigen. Dies funktioniert nur, wenn die Modelldatei geöffnet ist. Wenn die Modelldatei nicht geöffnet ist, wird eine Nachricht als "Objektreferenz nicht auf eine Instanz eines Objekts gesetzt" ausgegeben.Accesing Broadcast Ereignisse in C#

Wie kann ich das Formular anzeigen, auch wenn keine Modelldatei geöffnet ist? Nach der Recherche habe ich festgestellt, dass wir durch offene Dateiübertragung kontrollieren können, wie kann ich auf diese Methode in C# zugreifen und sie ändern. EA_Fileopen Funktion Dank

+0

Wie würden Sie Word-Menüs anzeigen, wenn Word nicht geöffnet ist? –

+0

Sie müssen einen Fehler machen, da Sie das Ereignis "EA_MenuClick" verwenden können, ohne dass ein Modell geöffnet sein muss. Debuggen Sie Ihren Code, um herauszufinden, warum Sie eine Nullpointer-Ausnahme erhalten. –

Antwort

1

Interop.EA enthält die gesamte EA API zu bekommen, gibt es keine zusätzliche Referenz hinzugefügt werden

Im refrence ich Interop EA.dll hinzugefügt haben, um dem anderen Referenz sollte ich hinzufügen.

Der Grund für den Fehler besteht darin, dass Sie versuchen, auf den Inhalt des Repositorys zuzugreifen, ohne zuerst zu prüfen, ob ein Repository geöffnet ist. Sie müssen überprüfen, ob der Repository Parameter von EA_MenuClick() gültig ist.

Sie sollten auch einen Menüstatushandler (EA_GetMenuState()) hinzufügen, der überprüft, ob das Repository gültig ist, und IsEnabled für alle Menüelemente, die ein offenes Repository benötigen, auf false setzt. Dies wird sie deaktivieren und verhindern, dass EA EA_MenuClick() aufruft.