2013-05-08 4 views
0

지난 목요일 이후로 내 질문에 대한 답변을 검색했습니다. 내 정확한 질문에 대한 답변이 많이 vb.net에서 answerd되었습니다. 그러나 Visual Basic 2008에서 작업하고 있는데이 두 언어는 이해하기 어려운 차이점이있는 것 같습니다. 그래서 여기에 내 문제가있다.동적 객체에 메서드를 추가하는 Visual Basic 2008 문제

여러 개의 그림 상자를 만들어야하고 여러 사이트를 권장대로 동적으로 만들었습니다. 그 부분은 잘 작동합니다. 문제를 클릭하고 싶을 때 문제가 시작됩니다. 나는 그것들을 첨부 된 메소드를 생성 한 객체를 생성했기 때문에 그것이 아니라는 것을 충분히 이해했다. 그런 다음 메서드를 만듭니다. 코드를 실행하고있을 때를 제외하고는 여전히 문제가 없습니다. 각 버튼은 동일한 메소드에 모두 연결되어 있기 때문에 동일한 작업을 수행합니다. 해결책을 찾았습니다.이 메서드를 사용하여 Picturebox에 클릭을 알리는 인수를 전송해야하지만 주소를 사용하고 있기 때문에 사용할 수 없습니다. 나는 동일한 문제에 대해 이야기하고 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 

감사합니다 모두 내 언어에 대한 유감 내 모국어가 아닌.

답변

0

각 PictureBox의 태그 속성을 설정 한 다음 click 이벤트 핸들러에서 태그에 대/소문자를 지정할 수 있습니다.

내장 이벤트 처리기에 매개 변수를 추가 할 수 없습니다.

+0

내가 초보자 그리고 난 방금 만든 researshes 지금 내가 사용 얼마나 나를 understant 할 수 있도록 않은 : 당신은 당신이 당신의 couleur 배열의 PictureBox의 인덱스를 찾을 수있는 클릭의 소스를 알 수 태그를 사용하여 내 문제를 해결하십시오. 태그가 무엇인지, 내 상황에서 어떻게 사용해야하는지 설명해 주시겠습니까? 도와 주셔서 감사합니다. –

+1

@ PascalLevesque, 그는'PictureBox' 클래스에 ['Tag']가 있음을 의미합니다 (http://msdn.microsoft.com/en-us/library/system.windows.forms.control. tag.aspx) 속성을 사용하면 인덱스 정수를 배치 할 수 있습니다. 예제에서와 같이 이벤트 핸들러는 태그에서 정수를 추출 할 수 있습니다. 예를 들어, '보낸 사람'에 대한 액세스 권한이 있다고 가정합니다. –

1

couleur_click을 발신자를 매개 변수로 사용하도록 변경하지 않는 이유는 무엇입니까?

' ... 
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