it-swarm.com.de

C # So ändern Sie die Schriftart eines Labels

Ein Formular mit einer Beschriftung und einem Button "Optionen". Durch Klicken auf die Schaltfläche wird ein neues Formular mit den beiden Optionsschaltflächen 'Font1' und 'Font2' und den beiden Schaltflächen 'Übernehmen' und 'Abbrechen' geöffnet. Wenn Sie eines der Optionsfelder auswählen und auf "Übernehmen" klicken, ändert das Etikett im ersten Formular die Schriftart. Das Problem ist, wie man die Schriftart wie von Tahoma in Arial oder in eine andere Schriftart der Beschriftung ändert.

Options-Formularcode für die Schaltfläche "Anwenden", der bei einem Klick auf dialogresult.ok == true zurückgegeben wird und die Schriftart der Beschriftung im ersten Formular ändert:

private void btnApply_Click(object sender, EventArgs e)
{
    if (radioFont1.Checked)
    {
        mainForm.lblName.Font.Name = "Arial"; 'wrong attempt 
    }
    this.DialogResult = DialogResult.OK;
}

Erklärung des Etiketts auf dem ersten Formular, so dass es für das zweite Formular sichtbar ist:

public static Label lblName = new Label();

...

private void mainForm_Load(object sender, EventArgs e)
{
    lblName = lblBarName;
}
15
TheEnd

Font.Name, Font.XYZProperty usw. werden nur gelesen, da Font ein unveränderliches Objekt ist. Daher müssen Sie ein neues Font object angeben, um es zu ersetzen:

mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size);

Überprüfen Sie den Konstruktor der Font-Klasse auf weitere Optionen.

31
djdd87

Sie können eine Schriftart nach dem Erstellen nicht mehr ändern. Sie müssen also eine neue erstellen:

  mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size);
8
Reed Copsey

Sie müssen eine neue Schriftart erstellen

mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size);
4
Borja

Ich bemerkte, dass es keine tatsächliche vollständige Code-Antwort gab. Als ich darauf stieß, habe ich eine Funktion erstellt, die die Schriftart ändert, die leicht geändert werden kann. Ich habe das in getestet 

- XP SP3 und Win 10 Pro 64

private void SetFont(Form f, string name, int size, FontStyle style)
{
    Font replacementFont = new Font(name, size, style);
    f.Font = replacementFont;
}

Hinweis: Ersetzen Sie Form in Label, RichTextBox, TextBox oder ein anderes relatives Steuerelement, das die Schriftart mithilfe von Schriftarten ändert. Durch die Verwendung der obigen Funktion wird sie somit vollständig dynamisch.

    /// To call the function do this.
    /// e.g in the form load event etc.

public Form1()
{
      InitializeComponent();
      SetFont(this, "Arial", 8, FontStyle.Bold);  
      // This sets the whole form and 
      // everything below it.
      // Shaun Cassidy.
}

Sie können auch, wenn Sie eine vollständige Bibliothek wünschen, damit Sie nicht alle Back-End-Bits codieren müssen, meine DLL von Github herunterladen können.

Github DLL

/// and then import the namespace
using Droitech.TextFont;

/// Then call it using:
TextFontClass fClass = new TextFontClass();
fClass.SetFont(this, "Arial", 8, FontStyle.Bold);

Einfach.

0
MasterCassidy