Mise de sender (picture box)

Résolu
Zag182 Messages postés 23 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 2 mars 2011 - 25 mai 2009 à 16:57
Zag182 Messages postés 23 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 2 mars 2011 - 26 mai 2009 à 13:48
Bonjour,
Je créée des PictureBox a partir d'un bouton.(dim Pic as new picturebox => Pic1, Pic2, Pic3....)
J'enregistre leurs positions dans un .INI
Un handles mouseup me permet de les faires bouger (il sait quelle picturebox bouge grâce au "sender").
Un coin de l'écran me permet de supprimer une picturebox.(Me.Controls.Remove(sender))
Quand je supprime la picture cela remet a jour mon point INI pour que le nom soit à la suite
(Pic1, <strike>Pic2</strike>,Pic3=>Pic1,Pic2)
Mon .INI fait c'est réglage correctement en suprimant les paramètres voulu mais sur ma fenetre je n'arrive pas a dire
que Pic3 devient Pic2... Je suis obligé de redémarrer mon programme. Et si jessaie de bouger pic3 après la suppression de pic2 le programme plante.
Comment faire pour qu'il detecte bien que mon Pic3 est devenu Pic2???
Sinon Comment puis-je faire pour supprimer un Pic en ligne de code?
 j'ai essayé : me.controls.remove(CType("Pic" & i , PictureBox))   (i étant un le numéro de Pic voulu numéro) mais cela ne marche pas.

Merci d'avance

5 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
26 mai 2009 à 12:26
Si ta form ne contient que des picturebox créé dynamiquement tu peux faire

'Supprime le dernier élément créé du formulaire
Me.Controls.RemoveAt(Me.Controls.Count - 1)

Sinon pour supprimer un cotrôle à partir d'une procédure évenementielle de celui-ci :

'Dans le cas ou "sender" est le PictureBox
Dim index As Integer = Me.Controls.IndexOf(sender)
Me.Controls.RemoveAt(index)

Pour retrouver un comtrôle d'après son nom de nimporte ou dans la feuille:

Dim pBox As PictureBox = Me.Controls("pic" & i)
'les contrôles ayant été déclaré‚ avec le nom "pic" comme suit:
Dim _pBox As New PictureBox
_pBox.Name = "pic" & Me.Controls.Count
Me.Controls.Add (_pBox)

Voila @+
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
25 mai 2009 à 20:01
Si tu tien à faire disparaitre un PictureBox créé dynamiquement alors utilise Dispose

Sub PictureBox_Click (sender As Object, e As Sytem.EventArgs)
    Dim p As PictureBox = sender
    Controls.Remove (p)
    p.Dispose
End Sub

Mais je sais pas si j'ai bien compris le but de ton code, un petit post serait le bienvenue
0
Zag182 Messages postés 23 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 2 mars 2011
26 mai 2009 à 09:38
Au faite ce que je voudrais, c'est qu'avec une ligne de code je sélectionne sender+1 ou sender+i
Sender étant des picturebox créer via un bouton!!!

Ton p.Dispose ça fait qui exactement?
0
Zag182 Messages postés 23 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 2 mars 2011
26 mai 2009 à 11:02
Au faite ce que je voudrais c'est pouvoir supprimer le dernier PictureBox créée, j'ai essayé:
Controls.remove("pic" & i)                             i étant le numéro du dernier PictureBox créée!!!
Controls.remove(Ctype("pic" & i, PictureBox))
Controls.remove(Ctype("pic" & i, PictureBox).name)
Controls.remove(sender+i-sender)

Enfin plein de chose mais ça ne marche pas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zag182 Messages postés 23 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 2 mars 2011
26 mai 2009 à 13:48
Merci beaucoup!! sa fonctionne!!!
0
Rejoignez-nous