Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net Visual basic 2008问题,向我的动态对象添加方法_Vb.net_Lambda_Expression_Addhandler_Addressof - Fatal编程技术网

Vb.net Visual basic 2008问题,向我的动态对象添加方法

Vb.net Visual basic 2008问题,向我的动态对象添加方法,vb.net,lambda,expression,addhandler,addressof,Vb.net,Lambda,Expression,Addhandler,Addressof,自上周四以来,我一直在寻找我问题的答案。关于我的同一个问题的许多答案都在vb.net中得到了解答。然而,我正在使用VisualBasic2008,这两种语言似乎有一些差异,让我难以理解。这就是我的问题 我需要创建几个图片框,我已经创建了几个网站推荐他们动态。那部分很好用。当我想点击它们时,问题就开始了。我读了足够多的书来理解,并不是因为我创建了对象,我才创建了附加到它们的方法。然后我创建了这个方法。仍然没有问题,除了在运行代码时,每个按钮都执行相同的操作,因为它们都附加到相同的方法。我找到了一个

自上周四以来,我一直在寻找我问题的答案。关于我的同一个问题的许多答案都在vb.net中得到了解答。然而,我正在使用VisualBasic2008,这两种语言似乎有一些差异,让我难以理解。这就是我的问题

我需要创建几个图片框,我已经创建了几个网站推荐他们动态。那部分很好用。当我想点击它们时,问题就开始了。我读了足够多的书来理解,并不是因为我创建了对象,我才创建了附加到它们的方法。然后我创建了这个方法。仍然没有问题,除了在运行代码时,每个按钮都执行相同的操作,因为它们都附加到相同的方法。我找到了一个解决方案:我需要用这个方法传递一个参数来告诉我正在点击的wich Picturebox,但因为我使用的是addressof,所以我不能。我知道很少有网站讨论过同样的问题,并使用lamda表达式解决了它。如果有人能给我应该使用的代码,我会非常感激

这是我的密码:

For i = 0 To 7
     'couleur is the name I give to my picturebox object and objet () is the sub in   which    I  created my object
    couleur(i) = objet()
Next

For x = 0 To 7
   ' initiasation of location, etc.
Next


   '     This is the issue !!! I do not know how to say this line into vb8
   ' I want to pass in argument  X to know on which object I have cliked on and then use a seled case to make separated command afterward.  
For x = 0 To 7
      AddHandler couleur(i).Click, Function(senderobj, args) couleur_click(x)
Next


End Sub

Sub couleur_click(ByVal i As Integer)

' select case doing seperated things depending on the x receive in argument

End Sub

谢谢大家的帮助,对不起,我的语言不是我的第一语言

设置每个PictureBox的tag属性,然后在click事件处理程序中,您可以对标记执行选择大小写操作


无法将参数添加到内置事件处理程序。

为什么不更改
couleur\u单击
将发送方作为参数?然后,您将知道单击的来源,从中可以在
couleur
数组中找到
PictureBox
的索引:

' ...
For x = 0 To 7
      AddHandler couleur(i).Click, AddressOf couleur_click
Next
' ...

Sub couleur_click(sender As Object, e As EventArgs)
   Dim pictureBoxSource As PictureBox = sender

   ' Find the index of the source in the base collection
   Dim index = Array.IndexOf(couleur, pictureBoxSource)

    Select Case index
        ' ...
    End Select
End Sub

我是新手,我刚刚做的研究让我明白了我必须如何使用标签来解决我的问题。你能解释一下标签是什么,在我的情况下我必须如何使用它吗?谢谢你的支持help@PascalLevesque,他的意思是,
PictureBox
类有一个属性,您可以在其中放置索引整数。然后,您的事件处理程序可以从标记中提取整数,假设您有权访问
发送方
,如我的示例所示。