Remettre à 0 un panel qui contient des Users Controls/Supprimer les UsersControl
Philmargera
Messages postés11Date d'inscriptionsamedi 4 août 2012StatutMembreDernière intervention 6 juillet 2016
-
25 août 2010 à 19:07
Philmargera
Messages postés11Date d'inscriptionsamedi 4 août 2012StatutMembreDernière intervention 6 juillet 2016
-
26 août 2010 à 06:17
Bonjour/Bonsoir,
voilà mon problème :
j'ai donc un panel qui contient plusieurs users controls, voici le code :
Au début, j'ai ceci :
static List listEspaces = new List();
quand je clique sur un des éléments de mon user control (qui est composé d'un label et d'une image) :
code=cs] PictureBox pb = (PictureBox)sender;
FPrincipale FP = new FPrincipale();
FP.supprimerComposantsPanneauPSHome(Convert.ToInt32(pb.Tag));/code
Quand j'affiche tous mes UserControl au début, tout fonctionne, mais ensuite j'aimerai les effacer pour en créer de nouveaux, mais là impossible, en mettant la listEspaces en static je peux effacer les UserControls, mais après la liste est inutilisable, voici le code que j'utilise :
Ici je crée mes UserControls : (tout ce passe comme je le voulais)
private void pSToolStripMenuItem_Click(object sender, EventArgs e)
{
int i = 0;
int x = 0;
int y = 0;
GestionDesPanneaux();
panelPS.Visible = true;
var espaces (from esp in this.dc.Espaces where esp.esp_esp null select esp).ToList();
foreach (Espaces espace in espaces)
{
listEspaces.Add(new UCEspaces());
listEspaces[i].AfficherTitre(espace.nom_esp, espace.id_esp);
listEspaces[i].AfficherImage("..\\..\\Images\\Espaces\" + espace.image_esp);
if (i % 8 == 0 && i > 0)
{
x = 130;
y += 152;
}
else
x += 130;
listEspaces[i].Location = new Point(x, y);
panelPS.Controls.Add(listEspaces[i]);
i++;
}
}
Ensuite lorsque je clique sur l'un des composants d'un userControl je passe ici : tout ce supprime, mais apparement pas comme cela devrait...
public void supprimerComposantsPanneauPS(int id)
{
this.id_espace = id;
int taille = listEspaces.Count();
for (int i = 0; i < taille; i++)
{
this.panelPS.Controls.Remove(listEspaces[0]);
listEspaces[0].Controls.Clear();
listEspaces.Remove(listEspaces[0]);
}
afficherElementPS();
}
private void afficherElementPS()
{
int i = 0;
int x = 0;
int y = 0;
var espaces (from esp in this.dc.Espaces where esp.esp_esp this.id_espace select esp).ToList();
String nomEspace (from esp in this.dc.Espaces where esp.id_esp this.id_espace select esp.nom_esp).Single();
listEspaces = new List();
foreach (Espaces espace in espaces)
{
listEspaces.Add(new UCEspaces());
listEspaces[i].AfficherTitre(espace.nom_esp, espace.id_esp);
listEspaces[i].AfficherImage("..\\..\\Images\\Espaces\" + nomEspace + "\" + espace.image_esp);
if (i % 8 == 0 && i > 0)
{
x = 130;
y += 152;
}
else
x += 130;
listEspaces[i].Location = new Point(x, y);
panelPS.Controls.Add(listEspaces[i]);
i++;
}
}
Je vous remercie d'avance pour votre aide, car sans ça, je peux pas avancer vu que je ne peux plus rien voir après :s
A voir également:
Remettre à 0 un panel qui contient des Users Controls/Supprimer les UsersControl
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 25 août 2010 à 22:16
Bonsoir
je n'ai pas analysé tout ton code, mais fdans ta boucle
for (int i = 0; i < taille; i++)
{
this.panelPS.Controls.Remove(listEspaces[0]);
listEspaces[0].Controls.Clear();
listEspaces.Remove(listEspaces[0]);
}
tu n'utilises pas la variable i, donc elle ne sert à rien.
ne serait-ce pas plutot
for (int i = 0; i < taille; i++)
{
this.panelPS.Controls.Remove(listEspaces[i]);
listEspaces[i].Controls.Clear();
listEspaces.Remove(listEspaces[i]);
}
Philmargera
Messages postés11Date d'inscriptionsamedi 4 août 2012StatutMembreDernière intervention 6 juillet 2016 26 août 2010 à 06:17
Cette partie là est juste, car si je met le i, il va m'indiquer une erreur comme quoi l'index était hors limite, vu qu'à chaque fois j'en efface un, la taille de la liste diminue donc, et donc à chaque fois l'élément 0 est différent, il m'efface donc bel et bien tous les éléments du panel.