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;
}
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.
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);
Vous devez créer une nouvelle police
mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size);
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
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.
/// and then import the namespace
using Droitech.TextFont;
/// Then call it using:
TextFontClass fClass = new TextFontClass();
fClass.SetFont(this, "Arial", 8, FontStyle.Bold);
Simple.