2017-12-11 3 views
0

Ich habe ein benutzerdefiniertes Ereignis erstellt. Was ich vorhabe, ist, einen benutzerdefinierten Aufgabenbereich unsichtbar zu machen, wenn ich auf die Schließen-Schaltfläche klicke, aber meine MainTaskPaneControl_HideTaskPane-Methode wird nicht ausgeführt. Ich vermisse eindeutig etwas Einfaches, aber ich bin mir nicht sicher, was ich vermisse.RaiseEvent wird nicht verarbeitet

Code, der zuerst in ThisAddIn Klasse läuft:

Dim gen = New PowerPointDocSetUpMain() 
AddHandler gen.HideTaskPane, AddressOf MainTaskPaneControl_HideTaskPane 

Abbrechen-Button in PowerPointDocSetUp Klasse:

Private Sub ButtonCancel_Click(sender As Object, e As EventArgs) Handles ButtonCancel.Click 
    Dim main As PowerPointDocSetUpMain = New PowerPointDocSetUpMain 
    main.CloseMain() 
End Sub 

PowerPointDocSetUpMain Klasse:

Public Event HideTaskPane() 
Public Function CloseMain() 
    RaiseEvent HideTaskPane() 

End Function 

MainTaskPaneControl_HideTaskPane Methode in ThisAddIn Klasse:

Friend Sub MainTaskPaneControl_HideTaskPane() 
    'Hide the requested task pane. 
    Globals.ThisAddIn.HideTaskPane() 
End Sub 

HideTaskPane Methode in ThisAddIn Klasse:

Friend Function HideTaskPane() As System.Windows.Forms.UserControl 
    myTaskPane.Visible = False 
End Function 

Antwort

2

Sie haben dort zwei Code-Schnipsel, die PowerPointDocSetUpMain Objekte zu erstellen, so dass Sie zwei verschiedene Objekte zu schaffen. Einer von ihnen registriert einen Event-Handler und der andere ruft CloseMain auf. Die Methode, für die Sie die Methode aufrufen, enthält keine Ereignisbehandlungsroutine und die Methode mit der Ereignisbehandlungsroutine hat die Methode nicht aufgerufen. Es ist schwer zu wissen, was genau die Lösung sein sollte, weil wir nicht wirklich wissen, wie diese Code-Snippets miteinander umgehen, aber die ersten beiden Code-Snippets können nicht beide neue Objekte erstellen. Wenn der erste ein Objekt erstellt und einen Ereignishandler registriert, muss der zweite CloseMain für dasselbe Objekt aufrufen.

+0

Danke für Ihren Kommentar. Ich verstehe, was Sie sagen, und es ist richtig, aber ich bin mir nicht sicher, wie ich das beheben würde, da ich eine Instanz von 'PowerPointDocSetUpMain' für meine Abbrechen-Schaltfläche brauche –

+1

Wie gesagt, es ist schwer, spezifisch zu sein, weil wir es nicht wissen die Beziehung zwischen diesen Code-Schnipsel. Grundsätzlich muss sich das zweite Code-Snippet jedoch auf das Objekt beziehen, das im ersten Code-Snippet erstellt wurde. Das bedeutet, dass Sie dieses Objekt irgendwo platzieren müssen, damit das zweite Code-Snippet darauf zugreifen kann, dh das 'ThisAddIn'-Objekt, das das' PowerPointDocSetUpMain'-Objekt erstellt und den Event-Handler registriert, um es in das 'PowerPointDocSetUp' -Objekt zu übergeben, das' aufruft CloseMain'. – jmcilhinney

1

Du fügt die Handler zum Objekt gen hier:

AddHandler gen.HideTaskPane, AddressOf MainTaskPaneControl_HideTaskPane 

Aber in den Button_Click -Methode ein neues Objekt main ohne Zusatz einen Handler sie erstellt wird. So wird der Handler für gen nie aufgerufen und der für main existiert nicht.

+0

Danke für Ihren Kommentar. Ich verstehe, was Sie sagen, aber ich bin mir nicht sicher, wie ich das beheben würde, da ich eine Instanz von 'PowerPointDocSetUpMain' für meine Abbrechen-Schaltfläche benötige –

Verwandte Themen