2011-11-04 8 views
2

J'utilise C# visual studio 2010 pour développer un site web ASP.NET.Case à cocher Étiquette ci-dessus Case à cocher. Comment?

Je crée dynamiquement une case à cocher au moment de l'exécution.

CheckBox chkbox = new CheckBox(); 
chkbox.ID = "chk" + checkboxID; 

// Add our checkbox to the panel 
dynamicPanel.Controls.Add(chkbox); 
chkbox.Text = checkboxName; 

Par défaut, l'étiquette est affichée à droite de la case à cocher. Je peux déplacer avec succès l'étiquette d'un côté à l'autre en ajustant chkbox.TextAlign = TextAlign.Right/Left.

Ce que je ne peux pas comprendre pour la vie de moi est comment placer le texte au-dessus de la case à cocher.

Je ne cherche aucune sorte de hack comme, verticle-align: -3px car cela ne fonctionnera pas pour moi parce que je laisse l'utilisateur choisir la police et la taille du texte. Ce ne sera pas toujours -3px en profondeur.

+2

et quel est le problème avec l'utilisation de CSS pour accomplir cela? – Didaxis

+0

@ErOx Et comment voulez-vous accomplir cela avec css? Je n'utilise pas d'étiquette et de case à cocher. J'utilise une étiquette avec la propriété text définie. – clamchoda

+0

Ensuite, utilisez une étiquette. C'est ce que fait la propriété TextAlign.Left | Right de toute façon – Didaxis

Répondre

2

Définissez le texte à aligner la propriété TextAlign.LEFT puis utilisez CSS pour définir l'affichage de l'étiquette: bloc.

3

Je suppose que vous devriez aller avec un nouveau contrôle où vous ajoutez une étiquette distincte sous la case à cocher (en fait envelopper la case à cocher). Dérivez cette classe de CheckBox et remplacez (ou définissez une nouvelle propriété si elle n'est pas virtuelle) la propriété Text, de façon à définir le texte de l'étiquette supérieure. Ce sera en fait un bon exemple de motif de décorateur.

+0

Ajout dynamique d'un emplacement pour une étiquette/case à cocher ainsi que de les garder liés ensemble (je crée dynamiquement environ 20 d'entre eux) semble que ce serait tout à fait mal de tête, je suis J'ai tort? – clamchoda

+1

Vous n'allez pas définir dynamiquement l'emplacement dans ce cas (bien que vous le pouvez). Vous avez déjà cet emplacement prédéfini dans le contrôle d'emballage. La seule chose qui reste à faire est d'instancier le contrôle et de définir la propriété Label. – Artak