Laden...

Eigenschaften des FontDialog via PropertyGrid ändern

Erstellt von C4RL0 vor 2 Jahren Letzter Beitrag vor 2 Jahren 279 Views
C4RL0 Themenstarter:in
96 Beiträge seit 2012
vor 2 Jahren
Eigenschaften des FontDialog via PropertyGrid ändern

Hallo zusammen,

ich habe in einer Form ein PropertyGrid in einer Form untergebracht, welches ich auszugsweise wir folgt fülle:


    class AttributesForPropertyGrid
    {
        [Browsable(true)]
        [ReadOnly(false)]
        [Description("Konfiguration des Headers")]
        [Category("Header")]
        [DisplayName("HeaderFont")]
        public Font HeaderFont { get; set; } = SystemFonts.DefaultFont;
    }


Nun meine Frage dazu:
Wie bekomme ich in dem im PropertyGrid aufpoppenden FontDialog die "ShowColor" Eigenschaft aktiviert, damit ich dort die Schriftfarbe wählen kann?


Gruß
Carlo

"Palabras que no coinciden con hechos no valen nada."

4.931 Beiträge seit 2008
vor 2 Jahren

Laut den Sourcen von System.Drawing.Design.FontEditor (mit ILSpy nachgeschaut) wird dort explizit die Eigenschaft ShowColor auf false gesetzt.
Evtl. klappt es, wenn du einen eigenen FontEditor (von UITypeEditor abgeleitet) implementierst und das EditorAttribute setzt:


[Editor("MyFontEditor", typeof(UITypeEditor))]

PS: Ich sende dir den Code per PM (da ich nicht weiß, ob ich diesen einfach hier veröffentlichen darf).

C4RL0 Themenstarter:in
96 Beiträge seit 2012
vor 2 Jahren

... Ich sende dir den Code per PM ...

Yeah, it works. Soweit hab ich ihn zum leben erweckt und mir wird jetzt im FontDialog auch die Option zur Farbauswahl geboten. (war etwas frickelig mit dem Editornamen, da er wohl voll qualifiziert sein muss, deshalb hab ich diesen via


[Editor(typeof(FontEditor), typeof(UITypeEditor))]

geholt. Danke dafür!

Nun folgt gleich die nächste Hürde ... nachdem ich die Schriftfarbe ausgewählt habe, wie lese ich sie aus?
Ich habe ja im ganzen Objekt meiner o.g. Klasse keine derartige Eigenschaft.


Gruß
Carlo

"Palabras que no coinciden con hechos no valen nada."

4.931 Beiträge seit 2008
vor 2 Jahren

Da fällt mir nur ein, daß du eine eigene Klasse mit den zwei Eigenschaften Font und Color erstellst und dafür dann den eigenen FontEditor zuweist.
Ich hatte vergessen, daß die Farbe ja nicht im Font-Objekt gespeichert wird, sondern man beim Zeichnen ja extra ein Pen (bzw. Brush) zusätzlich angeben muß.

Alternativ kannst du aber auch einfach eine eigene Eigenschaft Color in der Klasse AttributesForPropertyGrid erstellen und dort wird dann der ColorDialog aufgerufen.

C4RL0 Themenstarter:in
96 Beiträge seit 2012
vor 2 Jahren

Ich denke, letzteres werde ich dann wohl umsetzen.
Merci für Deine Hilfe.


Gruß
Carlo

"Palabras que no coinciden con hechos no valen nada."