Propriété anchor: j'y arrive pas :(

Résolu
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 26 avril 2006 à 10:47
cs_Jordan59 Messages postés 174 Date d'inscription vendredi 26 mai 2006 Statut Membre Dernière intervention 9 avril 2014 - 30 déc. 2006 à 19:51
Bonjour,

je suis en train de réaliser un controle utilisateur.
Ce controle est composé de 5 TextBoxes et 4 labels.
Il doit permettre à l'utilisateur de rentrer une adresse IP et un port.
Mon problème vient à l'utilisation des propriété anchor de mes composants.
En fait, lorsque je modifie la taille de mon contole, je voudrais que mes composants modifient également leur taille, c'est le but du anchor.
Mais je dois être trop bête car j'arrive pas à avoir ce que je souhaite, lors du rizize, tous mes composants se chevauchent.
Dons mon controle, les composants sont répartient ainsi:
TB: textBox
L: label

TB1 ; L1 ; TB2 ; L2 ; TB3 ; L3 ; TB4 ; L4 ; TB5

J'ai essayé plusieurs combinaisons de anchor mais rien n'y fait.
Quelqu'un pourrait il tester et me donner ces valeurs de anchor?

Je vous remercie

f.colo

5 réponses

Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
26 avril 2006 à 11:08
Voila comment fonctionne les anchors : mettre une anchor, par exemple "en bas", signifie que le bas du composant sera toujours a la même distance du bas de son "container". >> tu augmente la hauteur du container (la form), le composant restera tout en bas de la form.

De la même facon, mettre une anchor a gauche et a dtoite signifie que les bordures gauche et droite du composant resterons respectivement à la même distance des bordures gauches et droites du container. >> Tu modifie la largeur de la form, le composant s'agrandit et diminue en fonction, chacune de ses bordure restant accrochée au bord de la form.

Dans ton cas, si tu veux que tous les composants "sur une même ligne" s'agrandissent en fonction de la taille de la form... les anchors ne pourrons rien pour toi ! (les anchors se basent uniquement sur le composant et le container... alors que dans ton cas, il faut tenir compte du nombre de composants...)

Soit tu décide qu'un seul composant s"ajuste pour combler le changement de taille (par exemple tous les control ancrés à gauche, le dernier ancré à gauche et a droite), soit tu mets tes composants les un en dessous des autres (tous ancrés a gauche et a droite) - mais dans ce cas tu te retrouve avec le même problème pour le redimensionnement vertical...

Si tu veux garder cette disposition, et "répartir" le changement de taille de la form dans chacun de tes composants... il faut le faire à la main : utiliser l'évènement Resize de la Form, et recalculer a chaque fois la taille et la position de tes controles...
1
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
26 avril 2006 à 12:14
C'est facheux comme solution mais si c'est la seule facon ... je suis bien forcé de faire avec.
Merci du conseil.

f.colo
1
cs_Jordan59 Messages postés 174 Date d'inscription vendredi 26 mai 2006 Statut Membre Dernière intervention 9 avril 2014 7
30 déc. 2006 à 16:50
N'y aurait-il pas un exemple d'utilisation avec resize() pour pouvoir redimensionner tous les contrôles suivant la taille de la fenêtre? car avec anchor, c'est loin d'être parfait :(
Merci
1
taupe4 Messages postés 91 Date d'inscription dimanche 16 avril 2006 Statut Membre Dernière intervention 17 avril 2008 1
30 déc. 2006 à 18:05
Il faut d'abord utiliser les propriétés Size (Width , Height) et Location des Control et travailler pour arriver à les placer;

Par exemple, j'ai 4 panels et je veux que chaque fasse 1/4 de l'écran (pnl1, pnl2, pnl3, pnl4)

void MainFormResize(object s, EventArgs e){
 int moitieFormHor = (int)(Width/2);
 int moitieFormVer = (int)(Height/2);
 //Tous les panels ont la même grandeur
 pnl1.Size = new Size(moitieFormHor,moitieFormVer);

 pnl2.Size = new Size(moitieFormHor,moitieFormVer);
 pnl3.Size = new Size(moitieFormHor,moitieFormVer);

 pnl4.Size = new Size(moitieFormHor,moitieFormVer);
 //On ne doit pas déplacer le panel 1 puisqu'il ne change pas de location (il reste à gauche de la form
 pnl2.Location = new Point(moitieFormHor,0);
 pnl3.Location = new Point(0,moitieFormVer);
 pnl4.Location = new Point(moitieFormHor,moitieFormVer);
}
Ç'est un début pour t'aider, je cherche des tutos et je t'en dis plus ;)
En gros, Location & Size sont importants.
Enjoy
1

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

Posez votre question
cs_Jordan59 Messages postés 174 Date d'inscription vendredi 26 mai 2006 Statut Membre Dernière intervention 9 avril 2014 7
30 déc. 2006 à 19:51
OK merci
1
Rejoignez-nous