在VSTO(excel二次开发)中怎么使用removehandler方法?
在使用vsto为excel二次开发时,为一个workbook的SheetSelectionChange事件添加了事件处理程序:
AddHandler Wkb.SheetSelectionChange, AddressOf Workbook_SheetSelectionChange
事件处理程序是:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Excel.Worksheet, ByVal Target As Excel.Range) Handles Wkb.SheetSelectionChange
......
End Sub
然后想在另一个过程中删除事件处理程序:
RemoveHandler Wkb.SheetSelectionChange, AddressOf Workbook_SheetSelectionChange
但是出现了警告:
"AddressOf" 表达式在此上下文中不起作用,因为 "AddressOf" 的方法参数需要到该事件的委托类型的宽松转换。
我尝试了用变量:
Dim h As EventHandler = AddressOf Workbook_SheetSelectionChange
RemoveHandler Wkb.SheetSelectionChange, h
结果又出现错误:
EventHandler”的值无法转换为“WorkbookEvents_SheetSelectionChangeEventHandler
请问该怎么修改代码?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Private Sub Wkb_SheetSelectionChange(ByVal Sh As Excel.Worksheet, ByVal Target As Excel.Range) Handles Wkb.SheetSelectionChange
......
End Sub
'标准模块中声明一个全局级变量
Public app As Excel.Application = Globals.ThisAddIn.Application
'含有事件的类中声明一个事件变量,并在类对象初始化时赋值(略)
'在需要的地方使用
AddHandler Wkb.SheetSelectionChange, AddressOf Wkb_SheetSelectionChange