gregorycaloin
Messages postés8Date d'inscriptionmercredi 31 décembre 2008StatutMembreDernière intervention 2 mai 2012 15 nov. 2010 à 13:50
Je viens de découvrir un truc très intéressant et puisque ça n'était pas clairement mentionné.. Bref voili voilou, j'ai un peu cherché et fini par trouver.
Euhh pour info, je suis sous VISUAL STUDIO 2010
Dans un GROUPBOX "dur", je crée un objet PANEL dynamiquement.
Ensuite je crée un certain nombre de PICTUREBOX dans ce même panel.
Pour gérer l'évènement de clic sur l'un des nombreux PICTUREBOX pour savoir lequel j'ai cliqué, j'ai fais comme ça :
Private Function CreationBlocs(ByVal nombre As Int32, ByVal L As Int32, _
ByVal H As Int32, ByVal inter As Int32, _
ByVal monpanel As Panel)
' Création des pictureboxes de visualisation video
Dim start As Int32 = 1
monpanel.SuspendLayout()
Application.DoEvents()
For HT As Int32 = 0 To nbElmts_Hauteur -1
For PosL As Int32 = start To start + nbElmts_Hauteur
Dim Box As New PictureBox
Box.Name = "box_" & nombre
Box.Size = New Size(L, H)
Box.BorderStyle = BorderStyle.FixedSingle
Box.SizeMode = modeZoom
Next
start += nbElmts_Hauteur + 1
Next
monpanel.ResumeLayout()
End Function
Sub MonCadre_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim cadre As PictureBox
cadre = CType(sender, PictureBox)
Dim numCadre As Control = CType(sender, PictureBox)
MsgBox(numCadre.TabIndex) ' Renvoie l'index de l'objet "enfant" quand on clique dessus
' Maintenant je peux manipuler le contenu de mon PICTUREBOX, vers une autre fonction......
End Sub
PatBlarg
Messages postés67Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention11 mai 2010 4 déc. 2008 à 14:45
Merci pour le code! C'est un bon point de départ pour ce que je voulais faire!
cs_ntic_safi
Messages postés28Date d'inscriptiondimanche 29 avril 2007StatutMembreDernière intervention27 août 2008 14 nov. 2007 à 22:58
merci beaucoup Mr j'espere que tu va bien
TigerFab
Messages postés115Date d'inscriptionsamedi 15 février 2003StatutMembreDernière intervention18 mai 2008 2 févr. 2004 à 11:24
Mouais .. je pensais à ca aussi, mais s'il y a 100 boutons à créer, faut choisir 100 noms différents pour la propriété Name.
J'ai vu aussi la propriété AccessibleName pour faire la même chose.
Bon ben, si il n'y a que cette manière (tester les boutons dans une boucle sans pouvoir l'appeler directement en une ligne, genre item ...) je ferai comme ca.
Merci.
A+
cs_yous
Messages postés136Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention13 avril 20091 2 févr. 2004 à 07:17
A l'aide d'une boucle For Each qui passe en revue tous les contrôles et effectue un test sur le nom, exemple:
Dim Controle As Control
For Each Controle In Me.Controls
If Controle.Name = "bouton4" Then
'Traitement
Exit For
End If
Next Controle
bouton4 étant bien entendu l'un des boutons créé dynamiquement.
TigerFab
Messages postés115Date d'inscriptionsamedi 15 février 2003StatutMembreDernière intervention18 mai 2008 1 févr. 2004 à 19:16
Salut Yous,
J'ai une petite question par rapport aux boutons dynamiques:
tu crèes 10 boutons dynamiques par me.controls.add(but) où but est déclaré Button
comment dans une autre fonction tu accèdes à un de ces boutons créés ?
Avant en VB6, on faisait juste but(4).left pour accéder au 5èmebouton mais ici ? comment changer n'importe où une propriété sur un bouton créé dynamiquement ?
cs_yous
Messages postés136Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention13 avril 20091 22 oct. 2003 à 10:47
Exact, le principe énoncé est le même.
Tant pis, je pense que c'est une technique importante...
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 22 oct. 2003 à 10:36
15 nov. 2010 à 13:50
Euhh pour info, je suis sous VISUAL STUDIO 2010
Dans un GROUPBOX "dur", je crée un objet PANEL dynamiquement.
Ensuite je crée un certain nombre de PICTUREBOX dans ce même panel.
Pour gérer l'évènement de clic sur l'un des nombreux PICTUREBOX pour savoir lequel j'ai cliqué, j'ai fais comme ça :
Private Function CreationBlocs(ByVal nombre As Int32, ByVal L As Int32, _
ByVal H As Int32, ByVal inter As Int32, _
ByVal monpanel As Panel)
' Création des pictureboxes de visualisation video
Dim start As Int32 = 1
monpanel.SuspendLayout()
Application.DoEvents()
For HT As Int32 = 0 To nbElmts_Hauteur -1
For PosL As Int32 = start To start + nbElmts_Hauteur
Dim Box As New PictureBox
Box.Name = "box_" & nombre
Box.Size = New Size(L, H)
Box.BorderStyle = BorderStyle.FixedSingle
Box.SizeMode = modeZoom
Box.Location = New Point(3 + ((PosL - start) * (L + inter)), 3 + (HT * (H + inter)))
monpanel.Controls.Add(Box)
AddHandler Box.Click, AddressOf MonCadre_Click
Next
start += nbElmts_Hauteur + 1
Next
monpanel.ResumeLayout()
End Function
Sub MonCadre_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim cadre As PictureBox
cadre = CType(sender, PictureBox)
Dim numCadre As Control = CType(sender, PictureBox)
MsgBox(numCadre.TabIndex) ' Renvoie l'index de l'objet "enfant" quand on clique dessus
' Maintenant je peux manipuler le contenu de mon PICTUREBOX, vers une autre fonction......
End Sub
4 déc. 2008 à 14:45
14 nov. 2007 à 22:58
2 févr. 2004 à 11:24
J'ai vu aussi la propriété AccessibleName pour faire la même chose.
Bon ben, si il n'y a que cette manière (tester les boutons dans une boucle sans pouvoir l'appeler directement en une ligne, genre item ...) je ferai comme ca.
Merci.
A+
2 févr. 2004 à 07:17
Dim Controle As Control
For Each Controle In Me.Controls
If Controle.Name = "bouton4" Then
'Traitement
Exit For
End If
Next Controle
bouton4 étant bien entendu l'un des boutons créé dynamiquement.
1 févr. 2004 à 19:16
J'ai une petite question par rapport aux boutons dynamiques:
tu crèes 10 boutons dynamiques par me.controls.add(but) où but est déclaré Button
comment dans une autre fonction tu accèdes à un de ces boutons créés ?
Avant en VB6, on faisait juste but(4).left pour accéder au 5èmebouton mais ici ? comment changer n'importe où une propriété sur un bouton créé dynamiquement ?
22 oct. 2003 à 10:47
Tant pis, je pense que c'est une technique importante...
22 oct. 2003 à 10:36