cs_egwene
Messages postés54Date d'inscriptionlundi 31 juillet 2006StatutMembreDernière intervention 3 avril 2008
-
3 août 2006 à 14:05
cs_egwene
Messages postés54Date d'inscriptionlundi 31 juillet 2006StatutMembreDernière intervention 3 avril 2008
-
5 août 2006 à 06:55
Salut,
voici mon petit probleme : au debut de mon application je charge un form avec un menu et un grand panel vide. Selon la navigation dans le menu, je souhaite actualiser le panel central avec le panel adapte.
Pourtant quand je clique dans mon menu il ne se passe rien.
J'ai essayer ca :
Je rentre bien dans ma fonction car j'ai teste en y faisant afficher une messageBox mais les Refresh et autre semble sans effet.
Mon User se cree bien egalement car j'arrive a recuperer ses donnees.
Le Refresh et le Show s'adressent au form mais j'ai aussi essayer de le faire sur le panel sans un meilleur resultat. Pourtant ces proprietes devraient me re-dessiner mon form avec tous ses controls dont mon panel !
cs_egwene
Messages postés54Date d'inscriptionlundi 31 juillet 2006StatutMembreDernière intervention 3 avril 2008 3 août 2006 à 15:08
Tu m'a apporte une solution mais qui n'est pas celle que je recherche. Je fais un remove puis un add alors que je voulais rafraichir le panel existant.
La ligne :
this.Controls.RemoveByKey( "MainPanel" );
semble sans effet chez moi ???!!!
cs_egwene
Messages postés54Date d'inscriptionlundi 31 juillet 2006StatutMembreDernière intervention 3 avril 2008 4 août 2006 à 05:20
Effectivement, j'avais bien fais attention de mettre pnlMain a la place de MainPanel mais la propriete Name n'etait pas definie ! Il etait tard, on va dire ca.(je suis pas en France pour info, il etait vraiment tard).
Par contre, pouvez vous m'expliquer a quoi sert la propriete "RemoveByKey". A ce que j'ai compris, elle enleve le panel du tableau de controls de mon form. Donc elle enleve bien mon panel MainPanel surtout que je fais un add derriere du nouveau.
Je ne peux pas initialiser mon MainPanel avec un autre panel en faisant :
pnlMain = new UserGui(new User());
puis simplement le rafraichir ?
Qu'est ce que tu veux dire par :
Si tu veux rafraîchir le panel dans ce cas la faut pas faire ça :
pnlMain = new UserGui(new User());
mais plutôt modifier la propriété Controls de pnlMain.
cs_egwene
Messages postés54Date d'inscriptionlundi 31 juillet 2006StatutMembreDernière intervention 3 avril 2008 4 août 2006 à 14:16
Salut,
j'attend desesperement ta reponse Lutinore. J'ai teste ta piste mais franchement je vois pas ce que tu veux dire par modifier la propriete controls de pnlMain.
Tiens moi au courant SVP, c'est un peu bourrin de faire un remove puis un add !
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 4 août 2006 à 17:11
Tu as deux référence de ton panel. la première pnlMain et une seconde qui se trouve dans la collection de contrôles de ta forme ( elle y est ajoutée automatiquement par VS si tu travail avec le designer. )
Maintenant si tu fais ça :
pnlMain = new UserGui(new User());
pnlMain référence ( pointe ) vers le nouveau UserGui mais la référence qui était contenue dans la collection de contrôles de ta forme ( propriété Controls ) elle, elle référence ( pointe ) toujours vers l'ancien panel et rien n'est modifié visuellement.
Tu peux t'en convaincre avec ce code :
Panel p = new Panel( );
p.Name = "Panel1";
this.Controls.Add( p );
p = new Panel( );
p.Name = "Panel2";
// Les panels ne sont pas les mêmes.
MessageBox.Show( p.Name + " / " + this.Controls[ 0 ].Name );
Par contre si tu modifies directement les propriétes de pnlMain ( genre BackColor, Controls etc.. ) alors là oui visuellement tu verras les modifications.
cs_egwene
Messages postés54Date d'inscriptionlundi 31 juillet 2006StatutMembreDernière intervention 3 avril 2008 4 août 2006 à 17:36
Salut, merci pour ta reponse.
Je vois ce que tu veux dire. Du coup, au lieu de creer une nouvelle reference, j'ai essayer d'ecraser la premiere (celle de mon MainPanel) comme ceci :
this.Controls[IndicePanel] = new UserGui(new User( ));
UserGui derivant de panel evidemment !
Mais la propriété est en lecture seule !!! je me suis faite jeter !
Donc y-a t'il un moyen plus leger que Remove + Add pour modifier une des reference de la collection
cs_egwene
Messages postés54Date d'inscriptionlundi 31 juillet 2006StatutMembreDernière intervention 3 avril 2008 5 août 2006 à 06:55
Salut Lutinore,
cela me semble une bonne piste, j'ai pas mon code sous les yeux mais je testerai ça dès que possible.
Merci pour ton aide en tout cas, j'espère que j'arriverai à l'adapter car j'ai plusieurs classes différentes dérivées de panel, ... enfin bref c'est pas si simple.