Propriété anchor: j'y arrive pas :( [Résolu]

cs_fcolo
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Dernière intervention
20 février 2007
- 26 avril 2006 à 10:47 - Dernière réponse : cs_Jordan59
Messages postés
174
Date d'inscription
vendredi 26 mai 2006
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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Nikoui
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Dernière intervention
19 août 2008
- 26 avril 2006 à 11:08
3
Merci
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...

Merci Nikoui 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de Nikoui
cs_fcolo
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Dernière intervention
20 février 2007
- 26 avril 2006 à 12:14
0
Merci
C'est facheux comme solution mais si c'est la seule facon ... je suis bien forcé de faire avec.
Merci du conseil.

f.colo
Commenter la réponse de cs_fcolo
cs_Jordan59
Messages postés
174
Date d'inscription
vendredi 26 mai 2006
Dernière intervention
9 avril 2014
- 30 déc. 2006 à 16:50
0
Merci
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
Commenter la réponse de cs_Jordan59
taupe4
Messages postés
94
Date d'inscription
dimanche 16 avril 2006
Dernière intervention
17 avril 2008
- 30 déc. 2006 à 18:05
0
Merci
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
Commenter la réponse de taupe4
cs_Jordan59
Messages postés
174
Date d'inscription
vendredi 26 mai 2006
Dernière intervention
9 avril 2014
- 30 déc. 2006 à 19:51
0
Merci
OK merci
Commenter la réponse de cs_Jordan59

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.