首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未处理RaiseEvent

未处理RaiseEvent
EN

Stack Overflow用户
提问于 2017-12-11 18:11:04
回答 2查看 466关注 0票数 0

我已经定制了一个事件。我打算做的是在单击close按钮时使自定义任务窗格不可见,但是它不会运行我的MainTaskPaneControl_HideTaskPane方法。我显然遗漏了一些简单的东西,但我不确定我遗漏了什么。

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

代码语言:javascript
复制
Dim gen = New PowerPointDocSetUpMain()
AddHandler gen.HideTaskPane, AddressOf MainTaskPaneControl_HideTaskPane

PowerPointDocSetUp类中的取消按钮:

代码语言:javascript
复制
Private Sub ButtonCancel_Click(sender As Object, e As EventArgs) Handles ButtonCancel.Click
    Dim main As PowerPointDocSetUpMain = New PowerPointDocSetUpMain
    main.CloseMain()
End Sub

PowerPointDocSetUpMain类:

代码语言:javascript
复制
Public Event HideTaskPane()
Public Function CloseMain()
    RaiseEvent HideTaskPane()

End Function

ThisAddIn类中的MainTaskPaneControl_HideTaskPane方法:

代码语言:javascript
复制
Friend Sub MainTaskPaneControl_HideTaskPane()
    'Hide the requested task pane.
    Globals.ThisAddIn.HideTaskPane()
End Sub

ThisAddIn类中的HideTaskPane方法:

代码语言:javascript
复制
Friend Function HideTaskPane() As System.Windows.Forms.UserControl
    myTaskPane.Visible = False
End Function
EN

回答 2

Stack Overflow用户

发布于 2017-12-11 18:19:07

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

票数 2
EN

Stack Overflow用户

发布于 2017-12-11 18:19:23

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

代码语言:javascript
复制
AddHandler gen.HideTaskPane, AddressOf MainTaskPaneControl_HideTaskPane

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47750531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档