web-dev-qa-db-fra.com

Comment définir le texte d'une zone de texte en gras au moment de l'exécution?

J'utilise des formulaires Windows et j'ai une zone de texte que j'aimerais parfois mettre en gras le texte s'il s'agit d'une certaine valeur.

Comment modifier les caractéristiques de la police au moment de l'exécution?

Je vois qu'il existe une propriété appelée textbox1.Font.Bold mais il s'agit d'une propriété Get uniquement.

88
Diskdrive

La propriété en gras de la police elle-même est en lecture seule, mais pas la propriété de police réelle de la zone de texte. Vous pouvez modifier la police de la zone de texte en gras comme suit:

  textBox1.Font = new Font(textBox1.Font, FontStyle.Bold);

Et puis retour:

  textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);
157
Tim Lloyd

En fonction de votre application, vous souhaiterez probablement utiliser cette affectation de police pour modifier le texte ou pour activer/désactiver la zone de texte en question.

Voici un exemple rapide de ce à quoi il pourrait ressembler (forme vide, avec juste une zone de texte. La police devient gras lorsque le texte est 'gras', sans distinction entre majuscules et minuscules):

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        RegisterEvents();
    }

    private void RegisterEvents()
    {
        _tboTest.TextChanged += new EventHandler(TboTest_TextChanged);
    }

    private void TboTest_TextChanged(object sender, EventArgs e)
    {
        // Change the text to bold on specified condition
        if (_tboTest.Text.Equals("Bold", StringComparison.OrdinalIgnoreCase))
        {
            _tboTest.Font = new Font(_tboTest.Font, FontStyle.Bold);
        }
        else
        {
            _tboTest.Font = new Font(_tboTest.Font, FontStyle.Regular);
        }
    }
}
2
Robert Hui

Vous pouvez utiliser la méthode Extension pour basculer entre style normal et style gras comme ci-dessous:

static class Helper
    {
        public static void SwtichToBoldRegular(this TextBox c)
        {
            if (c.Font.Style!= FontStyle.Bold)
                c.Font = new Font(c.Font, FontStyle.Bold);
            else
                c.Font = new Font(c.Font, FontStyle.Regular);
        }
    }

Et utilisation:

textBox1.SwtichToBoldRegular();
1
Ali