我已经定制了一个事件。我打算做的是在单击close按钮时使自定义任务窗格不可见,但是它不会运行我的MainTaskPaneControl_HideTaskPane方法。我显然遗漏了一些简单的东西,但我不确定我遗漏了什么。
在ThisAddIn类中首先运行的代码:
Dim gen = New PowerPointDocSetUpMain()
AddHandler gen.HideTaskPane, AddressOf MainTaskPaneControl_HideTaskPanePowerPointDocSetUp类中的取消按钮:
Private Sub ButtonCancel_Click(sender As Object, e As EventArgs) Handles ButtonCancel.Click
Dim main As PowerPointDocSetUpMain = New PowerPointDocSetUpMain
main.CloseMain()
End SubPowerPointDocSetUpMain类:
Public Event HideTaskPane()
Public Function CloseMain()
RaiseEvent HideTaskPane()
End FunctionThisAddIn类中的MainTaskPaneControl_HideTaskPane方法:
Friend Sub MainTaskPaneControl_HideTaskPane()
'Hide the requested task pane.
Globals.ThisAddIn.HideTaskPane()
End SubThisAddIn类中的HideTaskPane方法:
Friend Function HideTaskPane() As System.Windows.Forms.UserControl
myTaskPane.Visible = False
End Function发布于 2017-12-11 18:19:07
这里有两个创建PowerPointDocSetUpMain对象的代码片段,所以创建的是两个不同的对象。其中一个需要注册一个事件处理程序,另一个需要调用CloseMain。调用该方法的那个没有事件处理程序,具有事件处理程序的那个也没有调用该方法。很难知道确切的解决方案应该是什么,因为我们并不真正知道这些代码片段是如何相互关联的,但前两个代码片段不能同时创建新对象。如果第一个创建了一个对象并注册了一个事件处理程序,那么第二个必须在同一个对象上调用CloseMain。
发布于 2017-12-11 18:19:23
您在这里将处理程序添加到对象gen:
AddHandler gen.HideTaskPane, AddressOf MainTaskPaneControl_HideTaskPane但在Button_Click-method中,会创建一个新的对象处理程序,而不会向其添加处理程序。因此,gen的处理程序永远不会被调用,并且main的处理程序不存在。
https://stackoverflow.com/questions/47750531
复制相似问题