首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带参数的AddressOf

带参数的AddressOf
EN

Stack Overflow用户
提问于 2012-02-05 02:42:16
回答 8查看 43.8K关注 0票数 17

不管怎样,我需要将groupID (和另一个整数)链接到我动态添加的按钮。有什么想法吗?

我能做什么;

代码语言:javascript
复制
AddHandler mybutton.Click, AddressOf PrintMessage

Private Sub PrintMessage(ByVal sender As System.Object, ByVal e As System.EventArgs)
    MessageBox.Show("Dynamic event happened!")
End Sub

我不能做但又想做的事;

代码语言:javascript
复制
AddHandler mybutton.Click, AddressOf PrintMessage(groupID)

Private Sub PrintMessage(ByVal groupID as Integer)
    MessageBox.Show("Dynamic event happened!" & groupID .tostring)
End Sub
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-02-05 02:45:13

使用AddressOf本身无法做到这一点。你要找的是一个lambda表达式。

代码语言:javascript
复制
AddHandler myButton.Click, Function(sender, e) PrintMessage(groupId)

Private Sub PrintMessage(ByVal groupID as Integer)
    MessageBox.Show("Dynamic event happened!" & groupID .tostring)
End Sub
票数 44
EN

Stack Overflow用户

发布于 2012-02-05 02:50:26

您可以创建自己的按钮类,并向其中添加任何您想要的内容

代码语言:javascript
复制
Public Class MyButton
    Inherits Button

    Private _groupID As Integer
    Public Property GroupID() As Integer
        Get
            Return _groupID
        End Get
        Set(ByVal value As Integer)
            _groupID = value
        End Set
    End Property

    Private _anotherInteger As Integer
    Public Property AnotherInteger() As Integer
        Get
            Return _anotherInteger
        End Get
        Set(ByVal value As Integer)
            _anotherInteger = value
        End Set
    End Property

End Class

从VB2010开始,您可以简单地编写

代码语言:javascript
复制
Public Class MyButton
    Inherits Button

    Public Property GroupID As Integer

    Public Property AnotherInteger As Integer
End Class

可以通过转换sender来访问该按钮

代码语言:javascript
复制
Private Sub PrintMessage(ByVal sender As Object, ByVal e As EventArgs)
    Dim btn = DirectCast(sender, MyButton)
    MessageBox.Show( _
      String.Format("GroupID = {0}, AnotherInteger = {1}", _
                    btn.GroupID, btn.AnotherInteger))
End Sub

这些新属性甚至可以在属性窗口中设置(在Misc下)。

在当前项目中定义的控件会自动出现在工具箱中。

票数 4
EN

Stack Overflow用户

发布于 2012-02-05 02:44:33

使用按钮的Tag属性。

代码语言:javascript
复制
Button1.Tag = someObject

AddressOf获取方法的地址,因此您不能将参数传递给它。

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

https://stackoverflow.com/questions/9143385

复制
相关文章

相似问题

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