Je concevons une interface utilisateur, et je me suis retrouvé démangeais la tête: comment puis-je aligner un texte de zone de texte et un texte d'étiquettes, qui sont côte à côte. P>
En mode de conception, il est facile, vous déplacez-en une avec votre souris, une ligne violette apparaît et voila! L'alignement est bon, mais le mien est généré du code, alors comment puis-je aligner leur contenu? P>
Merci! P>
EDIT STRT>: la mise en page est quelque chose que je ne peux pas utiliser (je ne fais pas les règles, mon patron ..) p>
3 Réponses :
Jetez un coup d'œil à la napperon. Néanmoins pas si facile d'obtenir le match de base mais en centrant verticalement l'étiquette et en définissant les lignes à l'automobile, vous obtiendrez quelque chose qui est commandé et flexible. p>
Sérieusement, le «coût» d'une nappe est toujours minuscule par rapport à ce que vous déposez dessus, de sorte que le raisonnement semble imparfait.
Ensuite, utilisez la largeur X, Y, la largeur, la hauteur de chaque commande (héritée du contrôle).
int padding = 5; textbox.Y = label.Y; textbox.X = label.Width + padding
J'ai déjà trouvé cette solution, mais nous utilisons Appstyling, qui définit la taille du texte, etc. Si le changement de conception, je devrais changer le rembourrage.
Qui aligne les sommets des deux contrôles qui est laid
@HENK HOLTERMAN: sans mise en page - cela ne va jamais être jolie.
@Matt nous utilisons des contrôles WinForm Infragistiques, que vous pouvez spécifier un style qui modifie la propriété apparente de vos commandes graphiques lorsque votre application commence à exécuter.
J'aime utiliser le EDIT STRUT>: Concernant votre restriction que "La mise en page est quelque chose que je ne peux pas utiliser": Vous voulez donc accéder à la position Snapline de base du texte pourpre programmatique, au moment de l'exécution? Cela est possible, mais il est peu probable qu'il soit plus rapide que les mises en page, car seul le concepteur pour le contrôle sait où il se trouve, vous devrez donc créer des concepteurs pour tous les contrôles dont vous avez besoin. P>
Cette question a un code qui peut être utilisé comme point de départ , mais comme je l'ai dit, ce n'est probablement pas la bonne approche, ce qui concerne les contraintes de performance. P> flowlayoutpanel code> (au lieu du
TableLayOntPanel code>) à cet effet car vous n'avez pas besoin de violon avec des colonnes. N'oubliez pas FORT> Pour retirer les ancrages du haut et du bas de chaque commande pour les rendre centrés verticalement et de définir FlowLayoutControl.Autosize = true et autosizemode = GROWANDSHRINK. P>
2 q's: 1. Ne pas débiter la mise en page simplement verticalement les commandes? Cela ne signifie pas nécessairement que les lignes de base de texte sont alignées (au moins pas en général, cela pourrait suffire pour la zone de texte et l'étiquette). 2. Si la disposition de débit fait i> alignez les lignes de base de texte et que le concepteur est le seul à connaître la ligne de base, comment la disposition de flux pourrait-elle fournir une implémentation plus rapide que l'on utilise le concepteur?
@chiccodoro: Vous avez raison, les lignes de base ne seront pas nécessairement alignées et je conviens que cela craint. Il est juste de naître moins que toute autre option que je suis au courant.
@ROMKYNS: Dans quoi à son tour, tu as raison :-) En fait, centralement, les commandes sont maintenant exactement ce que j'ai fait dans mon cas (avait un problème similaire, j'ai donc trouvé ce fil), et il suffit de
Je suis curieux de connaître la raison de la "règle de mise en page"
Nous utilisons la propriété Dock and Anchors. Ceci est dans une jolie grande application et une mise en page utilise plus de mémoire / cpu / etc. Nous utilisons donc l'ancrage et le quai, c'est assez pour nous.