Mise de sender (picture box) [Résolu]

Signaler
Messages postés
23
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
2 mars 2011
-
Messages postés
23
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
2 mars 2011
-
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

Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
36
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 @+
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
36
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
Messages postés
23
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
2 mars 2011

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?
Messages postés
23
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
2 mars 2011

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.
Messages postés
23
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
2 mars 2011

Merci beaucoup!! sa fonctionne!!!