Gérer des évènements depuis des controls créés dynamiquement [Résolu]

whombat 188 Messages postés mercredi 12 octobre 2005Date d'inscription 19 novembre 2011 Dernière intervention - 12 oct. 2011 à 11:46 - Dernière réponse : whombat 188 Messages postés mercredi 12 octobre 2005Date d'inscription 19 novembre 2011 Dernière intervention
- 12 oct. 2011 à 18:58
Bonjour à tous,

Je recherche comment je pourrais gérer des évènements depuis des controls créés dynamiquement. J'ai bien sûr fait un tour sur le site mais rien ne semble me correspondre (je suis en vb 2010).

J'ai bien étudié, et essayé de mettre en pratique, le 'WithEvents' mais je sèche. Mon script est simple : sur une form se trouvent des colonnes de petites PictureBox qui, chacune, a pour BackColor l'une des couleurs du System.Drawing.Color. Je voudrais que, si l'utilisateur clique sur une PictureBox, cela me renvoie la couleur choisie (le BackColor quoi...).

J'ai en parallèle des Labels qui indiquent, pour chaque PictureBox, le nom de la couleur. Pareil, si j'obtiens la couleur comme vu plus haut je saurais obtenir le nom, et l'inverse.

J'ai cherché dans System.Windows.Forms.Controls dans l'aide de Microsoft mais il y a bien 'presque' tous les Controls sauf le PictureBox. Je suppose donc que je ne vais pas pouvoir trouver une options sur la base de la collection de controls.

Quelqu'un aurait une idée ? Merci de votre aide.

Cordialement,

Whombat.

Prédire l'avenir est particulièrement aléatoire, 
surtout lorsqu'il s'agit du futur.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_lim 329 Messages postés jeudi 20 novembre 2003Date d'inscription 10 mai 2014 Dernière intervention - 12 oct. 2011 à 15:37
3
Merci
Salut,

Pour chacune des tes pictures box il faut que tu ajoutes un évennement avec AddHandler

Soit une 2 picturebox

Friend WithEvents pict As New PictureBox
Friend WithEvents pict2 As New PictureBox

Dans le load de la fenêtre

'Picture 1
pict.Location = New Point(10, 10)
pict.Size = New Size(50, 50)
pict.BackColor = Color.AliceBlue
'Picture 2
pict2.Location = New Point(100, 100)
pict2.Size = New Size(50, 50)
pict2.BackColor = Color.Azure
'Ajouter les controles à la form
Me.Controls.Add(pict)
Me.Controls.Add(pict2)
'Ajoute l'écouteur pour un clic sur une picture (le même pour les 2)
AddHandler pict.Click, AddressOf monclick
AddHandler pict2.Click, AddressOf monclick

'Déclaration de l'écouteur
Private Sub monclick(ByVal sender As System.Object, ByVal e As System.EventArgs)
'Affiche dans une messagebox la couleur de fond de la picturebox
MessageBox.Show(CType(sender, PictureBox).BackColor.ToString)
End Sub



En espérant que cela puisse t'aider à avancer

@+LIM

Merci cs_lim 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_lim
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 12 oct. 2011 à 12:31
Commenter la réponse de cs_ShayW
whombat 188 Messages postés mercredi 12 octobre 2005Date d'inscription 19 novembre 2011 Dernière intervention - 12 oct. 2011 à 13:04
0
Merci
Tout d'abord, merci pour la réponse.

Ouh La La...

Certes, j'avais déjà étudié ce genre de débat sur le forum et, bien sûr, lu attentivement la doc Microsoft. Mais ce n'est rentré qu'à moitié. J'arrive a avancer seul quand je comprends. Et là, je ne comprends pas tout. C'est flou. Du coup j'ai du mal à avancer.

En fait, chaque PictureBox a un nom. Je pensais créer sur la première PictureBox l'évènement click et en handles mettre la List pour que cet evènement fonctionne quelque soit l'index de la List.
quelque chose du genre :
Sub Pic1_Click(sender As System.Object, e As System.EventArgs) Handles ListPict(Index)
mais ça ne fonctionne pas, bien sûr, pourtant là j'aurais compris. Je crois qu'il y a 2 pb (au moins...) : le script ne comprend pas (je m'exprime mal...) que Pic1 est un élément de la ListPict et le 2ème pb : Index n'est pas défini et donc il ne peut pas le considérer comme variable (variable au sens ou il l'accepterait que Index = 2 ou Index=53)

Et enfin, cerise sur le gateau, je vois que la moitié des gens qui ont posté ou réalisé des scripts sur ce site utilisent une List(Of). Ce n'est pas (pas encore) mon cas. Je ne sais pas si c'est important, je n'arrive pas à comprendre comment ça fonctionne. J'ai l'habitude de VB4 et là c'était limpide. Ici je suis dans le brouillard...



Cordialement,

Whombat.

Prédire l'avenir est particulièrement aléatoire, 
surtout lorsqu'il s'agit du futur.
Commenter la réponse de whombat
whombat 188 Messages postés mercredi 12 octobre 2005Date d'inscription 19 novembre 2011 Dernière intervention - 12 oct. 2011 à 13:44
0
Merci
Un rectificatif par rapport à mon post précédent : tout comme Mr Jourdain, j'utilise des List(T) naturellement (et par logique). Les lignes que j'ai écrites étaients dues à celles lues avant dans différents messages ou scripts du site où les explications données (parfois) relevaient plus de l'initiation ésotérique que de la logique. J'étais donc bel et bien noyé.

Je passe déjà assez comme cela pour un innocent, il est inutile que j'en rajoute (hi hi hi) alors, s'il vous plaît, ne tenez pas compte des lignes sus-dites.

Il n'en demeure pas moins que mon problème est bien réel. Et toujours là.

Cordialement,

Whombat.

Prédire l'avenir est particulièrement aléatoire, 
surtout lorsqu'il s'agit du futur.
Commenter la réponse de whombat
whombat 188 Messages postés mercredi 12 octobre 2005Date d'inscription 19 novembre 2011 Dernière intervention - 12 oct. 2011 à 18:58
0
Merci
Super !

et grand merci. Pour ces quelques lignes, bien sûr, qui vont définitivement m'apporter une aide précieuse, mais surtout pour la façon dont elles sont commentées. J'ai tout compris. En fait, expliqué comme ça, c'est, me semble-t-il assez simple.

Preuve, s'il en est, que quand on veut on peut transmettre le savoir et da façon intelligible... Oui, je me sens tout de suite plus intelligent (en plus de soulagé et de reconnaissant.)

Merci encore.

Cordialement,

Whombat.

Prédire l'avenir est particulièrement aléatoire, 
surtout lorsqu'il s'agit du futur.
Commenter la réponse de whombat

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.