C# Fontsize ändern

Hallo,
ich möchte in C# den FontSize eines Labels-Felds per Code einstellen.

Label[n].Font.Size = lFSize[k];

Wobei lFSize[0] = 18 ist.

Es funktioniert nicht.
Die Labels mit Text laden funktioniert auf diese Art und Weise.
Irgendwie habe ich das mit der OOP noch nicht so richtig drauf.  

vG
der_kps

Hi,

verrätst du mir kurz welche Art von Anwendung du schreibst? Winforms, WebForms?

bis später
tastatürchen

Hallo,
es ist eine Forms-Anwendung.

labels[n] habe ich ordentlich instanziert; mit der Textzuweisung

labels[n].Text = lText[0];

wobei lText[0] = „mein Text“; ist und string[] lText;

funktioniert es ja. Es sind übrigens labels[] nicht Label[] !

Nur

labels[0].Font.Size= lFSize[0];

wobei lFSize[0] = 18; ist und int[] lFSize;

funktioniert nicht.

vG
der_kps

… mehr auf http://w-w-w.ms/a5dleg

Hallo,

Font ist ja eine eigene Klasse (dokumentiert hier). Die Size Property eines Font-Objektes ist read-only und kann nur über den Konstruktor festgelegt werden. Für dich bedeutet das, dass du nur das Font-Property auf dem Label verändern kannst, nicht jedoch die Size Property des Fonts.

Hier (ohne Arrayindizes zwecks Lesbarkeit):

Font font = new Font(label.Font.Name, lText, label.Font.Style));

Ein vollständiges Beispiel in C# -> hier.

Gruß
tastatürchen

1 Like

Zuweisung vergessen
es fehlt noch

label.Font = font;

und eine Klammer zuviel habe ich auch gemacht.

-.-

Hallo,
Danke für den Hinweis!

Ich habe das jetzt erfolgreich versucht mit

Font font = new Font(SchriftName, SchriftSize);



label.Font = font;

In den Variablen kann ich z.B. Arial, 20 festlegen.

Ich verstehe das jetzt so, dass an der Stelle

label.Font.Name

meine String-Variable SchriftName
und an der Stelle

label.Font.Size

meine float/Single-Variable SchriftSize steht.

Font font = new Font(label.Font, lText, label.Font.Style);

funktioniert mit

lText

und .

Style

nicht.

Die Schriftfarbe ändere ich mit der Variablen SchiftColor

label.ForeColor = Color.FromName(SchriftColor)

Nur Bold, italic etc. bekommen ich über Zuweisung mittels Variable nicht hin :frowning:

vG
der_kps

FontStyle
Hi,

ein Beispiel für Bold und Italic:

Font = new Font(FontFamily.GenericSansSerif.Name, 
 12, 
 FontStyle.Bold | FontStyle.Italic)

Ich verwende hier den generischen Sans Serif Font (der auf Microsoft Sans Serif lautet), setze die FontSize auf zwölf und das Label gleichzeitig auf Bold und Italic.

lieGrü
tastatürchen

Hallo,
so habe ich das auch gemacht und mittels switch verschiedene Einstellungen (Bold, Italic, underline) abgefragt und dann mit jeweils einer ganzen Zeile new Font … zugewiesen.

In VB6 konnte ich mir (glaube ich) so eine ganze Zeile als Text mit Verkettung zusammen basteln und als Variabel ablegen. Und das geht hier nicht.
Für den Fontnamen und Fontsize kann ich eine Variable einsetzen. Das gefällt mir besser als die Switch-Lösung.

switch (SchriftStyle = comboBox2.Text)
 {
 case "Regular":
 label0.Font = new Font(label0.Font, System.Drawing.FontStyle.Regular);
 break;

 case "Bold":
 label0.Font = new Font(label0.Font, System.Drawing.FontStyle.Bold);
 break;

Ich baue mir zum Einstieg einige (sinnfreie) Codeschnipsel z.B. für dieses Thema zusammen.
Über ComboBox und UpDown wähle ich Fontname und -size aus und formatiere ein Label.
Bei Bedarf kann ich das dann in richtigen Anwendungen einsetzen.

vG
der_kps

Eine Idee. Es wäre schön folgendermaßen vorgehen zu können:

// Befüllen der ComboBox
FontStyleEnumExtensions.GetFontStyleEnumValues()
 .ForEach(fontStyle =\> \_comboBox.Items.Add(fontStyle.ToString()));





// bei Änderung des ComboBoxInhaltes (z. B.)
void cbo\_SelectedValueChanged(object sender, EventArgs e)
{
 var fontStyle = FontStyleEnumExtensions.FontStyleFromString(
 \_comboBox.SelectedItem.ToString());
 \_label.Font = new Font(FontFamily.GenericSansSerif, 12, fontStyle);
}

Die folgende Klasse ermöglicht dies:

public static class FontStyleEnumExtensions
{
 public static FontStyle FontStyleFromString(string fontStyleString)
 {
 FontStyle fontStyle;
 if (Enum.TryParse(fontStyleString, out fontStyle))
 {
 return fontStyle;
 }
 else
 {
 throw new ArgumentException("Invalid FontStyle provided");
 }
 }

 public static List GetFontStyleEnumValues()
 {
 var allStyles = new List
 {
 FontStyle.Regular,
 FontStyle.Bold,
 FontStyle.Italic,
 FontStyle.Strikeout,
 FontStyle.Underline
 };
 return allStyles;
 }
}

Uijuijui…

Das sieht ja verwegen professionell aus.
Ich nehme den Code mal zu meiner Sammlung. Vielleicht kommt der Tag, dass ich auch in
solche OOP-Strukturen denke :wink:

Danke!
der_kps