RaiseEvent没有被处理

时间:2017-12-11 10:11:04

标签: vb.net events

我做了一个自定义活动。我打算做的是在单击关闭按钮时使自定义任务窗格不可见,但它不会运行我的make Makefile方法。我显然遗漏了一些简单的东西,但我不确定我错过了什么。

在ThisAddIn类中首先运行的代码:

MainTaskPaneControl_HideTaskPane

PowerPointDocSetUp类中的取消按钮:

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

PowerPointDocSetUpMain类:

Private Sub ButtonCancel_Click(sender As Object, e As EventArgs) Handles ButtonCancel.Click
    Dim main As PowerPointDocSetUpMain = New PowerPointDocSetUpMain
    main.CloseMain()
End Sub
ThisAddIn类中的MainTaskPaneControl_HideTaskPane方法:

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

End Function

ThisAddIn类中的HideTaskPane方法:

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

2 个答案:

答案 0 :(得分:2)

您有两个代码片段可以创建PowerPointDocSetUpMain个对象,因此您创建了两个不同的对象。其中一个是你注册一个事件处理程序,另一个是你打CloseMain。您调用方法的那个没有事件处理程序,而带有事件处理程序的那个没有调用它的方法。很难知道确切的解决方案应该是什么,因为我们并不真正知道这些代码片段是如何相互关联的,但前两个代码片段不能同时创建新对象。如果第一个创建一个对象并注册一个事件处理程序,那么第二个必须在同一个对象上调用CloseMain

答案 1 :(得分:1)

您将处理程序添加到对象gen

AddHandler gen.HideTaskPane, AddressOf MainTaskPaneControl_HideTaskPane

但是在Button_Click - 方法中,创建了一个新对象main,而没有向其添加处理程序。因此gen的处理程序永远不会被调用,main的处理程序不存在。