Frage

Dies ist eine Fortsetzung meiner vorherigen Frage.Schriftartabhängige Steuerungspositionierung.„Es ist ein Versuch, das Problem zu lösen real Hinter dieser Frage steckt vielleicht ein anderes Problem als das, nach dem ich gefragt habe.

Beispiel für die Problemstellung: Ich möchte ein Kontrollkästchen mit der Aufschrift „Preise anpassen um“. <X> <Y> nach dem Laden", wo <X> ist eine Zahl – anpassbar mit a NumericUpDown---Und <Y> ist entweder „Prozent“ oder „Dollar“, wobei die Auswahl von a getroffen wird ComboBox.Dies erfolgt in einer einzigen Zeile.

Die Komplikation: Ich möchte in der Lage sein, meine Schriftarten für alle diese Steuerelemente zu ändern (im Grunde genommen auf System.Drawing.Fonts.MessageBoxFont, also Tahoma 8 pt unter Windows XP/usw.und Segoe UI 9 pt unter Vista), ohne mein Layout durcheinander zu bringen, was bei meinem aktuellen der Fall ist Position-property--setting Paradigma funktioniert nicht.

Generell möchte ich, dass die Steuerelemente dynamisch und schriftartunabhängig angeordnet werden, damit die <X> NumericUpDown passt genau in den Raum zwischen „by“ und dem <Y> ComboBox, und ebenso die <X> ComboBox passt in Bezug auf die <X> CheckBox und die Zeichenfolge „nach dem Laden“ rechts davon.

Der Teil, den jeder zu vermissen scheint: Dies ist alles in einem verschachtelt CheckBox.Im Idealfall sollte ein Klick auf die Wörter "nach dem Laden" das Kontrollkästchen aktivieren/deaktivieren und das kleine Markierungsrechteck um "Preise nach dem Laden anpassen" zeichnen. Also einfach eine zusätzliche Ohrfeige Label am Ende funktioniert nicht, weil es dann nicht umschaltet CheckBox;Ebenso versucht man, Dinge zu reparieren, indem man so etwas anschließt Label'S Click Das Ereignis erzeugt nicht das gewünschte Hervorhebungsrechteck.

Lösungen? An diesem Punkt denke ich entweder:

  1. Überdenken Sie das Problem irgendwie noch einmal, vielleicht mit einer hässlichen Lösung wie zwei separaten Textzeilen:„Gefundene Preise nach dem Laden anpassen“ (CheckBox), „Anpassungsbetrag:“ (NumericUpDown Und ComboBox).Das ist wirklich schlimm, denn mein Optionsfeld ist voll von Optionen dieser Art (d. h.der Typ im Beispiel), so dass sich die vertikale Größe mindestens verdoppeln würde.

  2. Eine Art benutzerdefinierte Steuerung? SplittableCheckBox?

  3. Eine Art Magie mit einem TableLayout Kontrolle?(Ich bin mir ziemlich sicher, dass dies bei „dem Teil, den jeder zu übersehen scheint“ scheitert.)

  4. Geben Sie auf und kehren Sie entweder zu MS Sans Serif zurück oder verwenden Sie einheitlich Tahoma oder packen Sie Segoe UI in meine Anwendung und ignorieren Sie so die Standardschriftarten des Systems.

  5. (Neu, per Bearbeitung) Wechseln Sie zu WPF, wenn mich jemand davon überzeugen kann, dass es genau dieses Szenario unterstützt.

War es hilfreich?

Lösung

Wenn Sie mehrere Optionen haben, die diesem Layout folgen, warum erstellen Sie dann nicht ein Benutzersteuerelement?Das Benutzersteuerelement enthält die CheckBox, ein NumericUpDown, ein ComboBox und eine Beschriftung für „nach dem Laden“.Sie können OnFontChanged überschreiben, um die Position der Steuerelemente basierend auf der Darstellung des Texts mit der angegebenen Schriftart anzupassen.Fügen Sie dem Label einen EventHandler hinzu, um die CheckBox zu aktivieren/deaktivieren.

Da das Fokusrechteck alle Steuerelemente umgibt, sollten Sie in der Lage sein, dem Benutzer den Steuerelementfokus zu geben, wenn auf eines seiner inneren Steuerelemente geklickt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top