2010-08-09 4 views
9

gauche avec une ancre Je peux écrire la ligne suivante:Comment dock pour le haut et le

myControl.Anchor = (AnchorStyles.Top | AnchorStyles.Left); 

Et il ancrera myControl à gauche et en haut.

Pourquoi ne puis-je faire ce qui suit:

myControl.Dock = (DockStyle.Top | DockStyle.Left); 

Je peux écrire la ligne ci-dessus, mais tout ce qu'il fait est de définir la DockStyle à gauche.

Une pensée/raisons pour cela?

+0

Je pense que vous ne comprenez pas comment obtenir la disposition désirée en utilisant dock, ancre et un certain type de contrôle de conteneur (comme TableLayoutPanel). Avec ces éléments, vous êtes capable de construire tous les types de mise en page qui s'adaptent bien à la taille de votre formulaire/contrôle. Donc, si vous fournissez plus d'informations sur ce que vous aimez réaliser dans votre mise en page, je suis sûr que nous pouvons trouver une solution. – Oliver

Répondre

11

La raison pour laquelle vous ne pouvez pas le faire est que la définition d'un DockStyle permet d'ancrer/de remplir l'intégralité de l'arête spécifiée.

Par exemple, DockStyle.Left signifie que la hauteur de l'élément étant ancré sera toujours la hauteur du récipient et le X, Y emplacement sera toujours 0, 0.

DockStyle.Top signifie que la largeur de la item sera toujours la largeur du conteneur et l'emplacement sera toujours 0,0.

Le réglage DockStyle.Top et DockStyle.Left vous donnerait essentiellement DockStyle.Fill. C'est à dire. la même largeur et hauteur que le conteneur.

+0

Merci Gtt, ça explique ce que je vois. Je pourrais avoir à poser une autre question sur ce que j'essaie de réaliser une fois que je trouverai comment l'exprimer! – AidanO

+0

Pas de problème. J'ai traversé toute la douleur de m'ancrer et de m'ancrer, alors je vais garder un œil sur la prochaine question. – GenericTypeTea

1

La valeur DockStyle ne peut être définie que sur une valeur, contrairement à la valeur Anchor qui peut être définie sur plusieurs.

C'est pourquoi il existe la propriété Anchor afin que vous puissiez ajuster comment le contrôle réagit au redimensionnement de formulaire plus spécifiquement.

+0

Ceci est vrai, mais quelle est la raison de cette restriction sur le docking et est-il un moyen de contourner le problème? – AidanO

+0

Je ne connais pas une raison spécifique pour laquelle, je pense que le Dock est juste pour l'amarrage simple et facile des contrôles et ne fonctionnerait pas avoir des multiples (vous ne pourriez pas avoir un remplissage de style Dock ET aucun par exemple) Ancre aussi. – w69rdy

3

Un Dock est un jeu d'ancres prédéterminé, tandis qu'un Anchor est une configuration de quai personnalisée.

DockStyle.Top est la même que Anchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right) sauf qu'une ancre peut s'asseoir à n'importe quelle position initiale et qu'un quai se déplace vers le bord éloigné.

+0

Ils sont similaires, mais ils ne sont pas identiques. L'ancrage vous permet de définir des emplacements éloignés des bords du conteneur. L'ancrage force le contrôle ancré sur le bord spécifié. C'est à dire. Left = 0. Top = 0. – GenericTypeTea

+0

@GenericTypeTea Je l'ai dit dans ma réponse – Codesleuth

+0

Alors vous l'avez fait. Mes excuses, je ne l'ai apparemment pas lu correctement. – GenericTypeTea

Questions connexes