2010-05-03 7 views
4

J'ai un flowLayoutPanel auquel j'ajoute par programmation de nouveaux panelLayouts. Chaque panelLayout a un pictureBox dedans. Tout fonctionne bien, mais j'ai besoin de détecter quand on clique sur cette image. Comment ajouter un événement à l'image? Il me semble être en mesure de trouver que des exemples C# ....ajouter un événement click à picturebox vb.net

mon code pour ajouter l'image est la suivante ...

 ' add pic to the little panel container 
     Dim pic As New PictureBox() 
     pic.Size = New Size(cover_width, cover_height) 
     pic.Location = New Point(10, 0) 
     pic.Image = Image.FromFile("c:/test.jpg") 
     panel.Controls.Add(pic) 

     'add pic and other labels (hidden in this example) to the big panel flow 
     albumFlow.Controls.Add(panel) 

donc je suppose quelque part quand je crée l'image ajouter un événement onclick. Je dois aussi obtenir l'index si c'est possible! Merci pour toute aide!

Répondre

5

Utilisez l'instruction AddHandler pour vous abonner à l'événement Click:

AddHandler pic.Click, AddressOf pic_Click 

L'argument de l'expéditeur de la méthode pic_Click() vous donne une référence à la zone d'image arrière:

Private Sub pic_Click(ByVal sender As Object, ByVal e As EventArgs) 
    Dim pic As PictureBox = DirectCast(sender, PictureBox) 
    ' etc... 
End Sub 

Si vous besoin d'informations supplémentaires sur le contrôle spécifique, comme un index, vous pouvez utiliser la propriété Tag.

+0

Merci encore une fois Hans, faites attention !! J'ai utilisé le pic.tag et tout est parfait. :) –

+0

N'oubliez pas de supprimer les gestionnaires d'événements si/quand vous vous débarrassez du formulaire, sinon ils vont traîner et manger vos ressources. – camainc

+0

Ce n'est pas nécessaire ici. Il ajoute le contrôle à la collection Controls et le gestionnaire d'événements est dans le formulaire. Il est ainsi disposé et la référence du délégué ne peut pas garder l'instance de formulaire en vie. –

0

Remplacez PictureBox1 par le nom de votre contrôle.

Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click 
    'executes when PictureBox1 is clicked 
End Sub 
Questions connexes