web-dev-qa-db-fra.com

C # Comment changer la police d'une étiquette

Un formulaire avec une étiquette et un bouton 'Options'. En cliquant sur le bouton, un nouveau formulaire s'ouvre avec 2 boutons radio "Font1" et "Font2", et deux boutons "Appliquer" et "Annuler". Lorsque vous sélectionnez l'un des boutons radio et cliquez sur "Appliquer", le libellé du premier formulaire modifie la police. Le problème est de savoir comment changer la police, par exemple Tahoma, en Arial ou en une autre face de l’étiquette.

Le code de formulaire d'options pour le bouton Appliquer, qui, s'il était cliqué, renverra dialogresult.ok == true et modifiera la police de l'étiquette du premier formulaire:

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

Déclaration du label sur le premier formulaire afin qu'il soit visible au second formulaire:

public static Label lblName = new Label();

...

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

Font.Name, Font.XYZProperty, etc sont en lecture seule car Font est un objet immuable, vous devez donc spécifier un nouvel objet Font pour le remplacer:

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

Vérifiez le constructeur de la classe Font pour d'autres options.

31
djdd87

Vous ne pouvez pas changer une police une fois qu'elle est créée - vous devez donc en créer une nouvelle:

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

Vous devez créer une nouvelle police

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

J'ai remarqué qu'il n'y avait pas de réponse de code complet, alors j'ai trouvé une fonction qui change la police, ce qui peut être facilement modifié. J'ai testé cela dans 

- XP SP3 et 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;
}

Astuce: remplacez Form par Label, RichTextBox, TextBox ou tout autre contrôle relatif utilisant des polices pour modifier la police utilisée. En utilisant la fonction ci-dessus le rendant ainsi complètement dynamique.

    /// 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.
}

Vous pouvez également, si vous voulez une bibliothèque complète afin de ne pas coder tous les bits d’arrière-plan, vous pouvez télécharger ma dll depuis Github.

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);

Simple.

0
MasterCassidy