Question

C'est une réponse à ma question précédente "En fonction de la police de contrôle de positionnement."C'est une tentative pour résoudre le réel problème derrière cette question, peut-être d'une manière différente que celle que je posais des questions à propos de.

Exemple de l'énoncé du problème: Je veux une case qui dit: "Ajuster les prix en <X> <Y> après le chargement," où <X> est un nombre---ajustable avec un NumericUpDown---et <Y> soit le "pour cent" ou de "dollars", avec le choix d'un ComboBox.Ce sera sur une seule ligne.

La complication: Je veux être en mesure de changer mes polices de caractères pour l'ensemble de ces contrôles (en gros, à System.Drawing.Fonts.MessageBoxFont, qui est Tahoma 8 pt Windows XP/etc.et Segoe UI 9 pt sur Vista), sans gâcher ma disposition, avec mon actuelle Position-la propriété-réglage de paradigme ne fonctionne pas.

Plus généralement, j'aimerais le contrôle dynamique des énoncés dans une police de caractères de manière indépendante, de sorte que le <X> NumericUpDown s'intègre parfaitement dans l'espace entre "en" et le <Y> ComboBox, et , de même, l' <X> ComboBox s'inscrit dans le respect de la <X> CheckBox et la chaîne "après le chargement" à sa droite.

La partie que tout le monde semble manquer: C'est tout imbriquée à l'intérieur d'un CheckBox.Donc, idéalement, en cliquant sur les mots "après le chargement" doit cocher/décocher la case, et de tirer que peu de mettre en évidence rectangle autour de "Ajuster les prix par après le chargement." Donc, juste se taper un extra Label sur la fin ne fonctionne pas, car alors il ne fait pas basculer la CheckBox;de même, en essayant de band-aid choses en raccordant un tel Label's Click événement à ne pas obtenir le résultat souhaité mettre en avant-rectangle.

Des Solutions? À ce stade, je pense que soit:

  1. Repenser le problème, en quelque sorte, peut-être un vilain solution à deux lignes de texte:"Ajuster trouvé les prix après le chargement" (CheckBox), "Réglage de la quantité:" (NumericUpDown et ComboBox).C'est vraiment mauvaise, car mes options de la boîte est absolument complète d'options de ce type (c'est à direle type dans l'exemple), il serait au moins le double en taille verticale.

  2. Une sorte de contrôle personnalisé? SplittableCheckBox?

  3. Une sorte de magie avec une TableLayout contrôle?(Bien sûr cela ne parvient pas à "la partie que tout le monde semble manquer.)

  4. Donner, et soit de revenir à MS Sans Serif, ou de l'utilisation Tahoma uniformément, ou un package Segoe UI à ma demande, donc manque de respect envers le système de polices par défaut.

  5. (De nouveau, avec édition) Commutateur à WPF, si quelqu'un peut me convaincre qu'il prend en charge ce scénario exactement.

Était-ce utile?

La solution

Si vous disposez de plusieurs options qui suivent cette mise en page, pourquoi ne pas créer un contrôle utilisateur?Le contrôle de l'utilisateur contient la Case à cocher, un NumericUpDown, une zone de liste déroulante et une étiquette pour le "après le chargement".Vous pouvez remplacer OnFontChanged pour ajuster l'emplacement des contrôles basés sur l'interprétation du texte avec la police.Ajouter un Gestionnaire d'événements pour l'Étiquette de cocher/décocher la Case.

Comme pour le rectangle de focus surround tous les contrôles, vous devriez être en mesure de donner le contrôle à l'utilisateur de se concentrer quand l'un de ses commandes intérieures est cliqué.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top