首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AddHandler和Handles -有什么不同?

AddHandler和Handles -有什么不同?
EN

Stack Overflow用户
提问于 2010-01-18 19:02:18
回答 2查看 2.1K关注 0票数 1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-18 19:22:46

在附加事件处理程序的确切时间以及事件处理程序周围发生的事情方面存在一些差异。例如,当使用WithEventsHandles时,编译器将发出代码,该代码包装对包含在属性中公开事件的实例的变量的访问,并且在属性设置器中,编译器将从以前的实例(如果有)中分离事件处理程序,然后将事件处理程序附加到新实例(如果有)。

这意味着如果您采用以下代码示例,则对mm的访问将表现出不同的行为:

代码语言:javascript
复制
' WithEvents approach '
Dim WithEvents mm As SomeClass
Sub Main()
    mm = New SomeClass()
    Dim nn As SomeClass = mm
End Sub

' Other approach '
Dim mm As SomeClass
Sub Main()
    mm = New SomeClass()
    Dim nn As SomeClass = mm
End Sub

WithEvents示例中,mm = New SomeClass()实际上将调用属性设置器,Dim nn As SomeClass = mm将从属性获取方法获取值,而在第二种示例中,将不会为值创建属性,但代码将直接访问该字段。

票数 3
EN

Stack Overflow用户

发布于 2010-01-19 06:08:20

代码语言:javascript
复制
Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button1.Click

End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs)

End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'this

    AddHandler Button2.Click, AddressOf Button2_Click

    'now Button2_Click looks like this

    'Private Sub Button2_Click(ByVal sender As System.Object, _
    'ByVal e As System.EventArgs) Handles Button2.Click

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

https://stackoverflow.com/questions/2085471

复制
相关文章

相似问题

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