2010-10-23 4 views
2

J'ai un contrôle pour lequel j'ai besoin d'appliquer un certain Width ou Height, en fonction d'une propriété appelée Orientation, qui peut évidemment être Vertical ou Horizontal.Appliquer la largeur ou la hauteur du contrôle?

Donc, si la propriété est OrientationVertical, le Widthdoittoujours être 2.
Si la propriété est OrientationHorizontal, le Heightdoittoujours être 2.

I J'ai essayé beaucoup de choses, y compris MaximumSize, mais aucun d'entre eux semble fonctionner assez bien.
À titre d'exemple ... Une seule ligne TextBox (avec Multiline défini sur False.)?

Répondre

2

Voici les étapes:

  1. Mettre en place un concepteur pour le contrôle en créant une classe vide qui hérite de ControlDesigner.
  2. Dans cette classe de concepteurs, remplacez la propriété SelectionRules et renvoyez les règles que vous souhaitez utiliser pour votre contrôle. par exemple, définissez left et right-size uniquement si vous souhaitez interdire le redimensionnement vertical.
  3. Associez le concepteur à votre contrôle en décorant votre classe de contrôle avec le DesignerAttribute et en référençant votre classe de concepteur dans le constructeur de l'attribut.
+0

Merci pour la réponse. Je vais tester ça tout de suite! – Vercas

+0

Merci encore beaucoup, cela répond également à une autre question que j'allais poser à propos de l'application de l'emplacement! Cela fonctionne parfaitement! – Vercas

+0

De rien! – CesarGon

0

Est-ce un contrôle utilisateur personnalisé? Si c'est le cas, vous pouvez construire cette logique dans la propriété Orientation. S'il s'agit d'un contrôle personnalisé, vous pouvez écrire la propriété Orientation de façon à ce que la méthode set vérifie la valeur (Vertical ou Horizontal), puis définit Width/Height en conséquence. Dans la même méthode, vous pouvez également mettre à jour deux champs booléens, tels que dontLetUserSetWidth et dontLetUserSetHeight, en fonction de la valeur.

Cela vous at-il aidé? Je suis désolé si je n'ai pas bien lu votre question!

+0

Non, j'aurais mentionné le contrôle de l'utilisateur au lieu du contrôle. Je pourrais construire la logique là mais alors l'utilisateur serait capable de redimensionner le contrôle après avoir défini la propriété. – Vercas

0

À titre d'exemple ... Une seule ligne TextBox (avec multiligne sur False.)

Compte tenu de cet exemple spécifique, avec multiligne false, vous devrez gérer explicitement l'multiligne Mode lorsque la figure verticale change.

+0

Je ne comprends pas ... Que voulez-vous dire? – Vercas

Questions connexes