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

98

J'utilise des formulaires Windows et j'ai une zone de texte que j'aimerais parfois rendre le texte en gras 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 c'est une propriété Get only.

Disque
la source

Réponses:

181

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

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

Et puis de nouveau:

  textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);
Tim Lloyd
la source
1
Merci! wow, c'était beaucoup plus facile que je ne l'imaginais. Donc, je suppose que cela signifie qu'une police est comme une chaîne, une fois que vous la créez, vous ne pouvez pas la changer. vous ne pouvez en déclarer qu'une nouvelle instance.
Diskdrive
2
Oui, il semble se comporter comme une chaîne en termes de ne pas pouvoir changer son état une fois créé, c'est-à-dire qu'il est immuable . Cependant, bien qu'il existe des articles MSDN qui font référence à Font étant immuable, la référence réelle pour Font elle-même ne l'indique pas.
Tim Lloyd
pour un linkbutton cela a fonctionné pour moi: button.Font.Bold = true
deebs
Peut-on faire la même chose pour un texte partiel? Je veux dire que je veux souligner juste une partie du texte.
Anil
3

En fonction de votre application, vous souhaiterez probablement utiliser cette attribution de police lors du changement de texte ou de la mise au point / du flou de la zone de texte en question.

Voici un exemple rapide de ce à quoi cela pourrait ressembler (formulaire vide, avec juste une zone de texte. La police devient en gras lorsque le texte lit «gras», insensible à la casse):

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);
        }
    }
}
Robert Hui
la source
1

Vous pouvez utiliser la Extensionméthode pour basculer entre le style régulier et le 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 l'utilisation:

textBox1.SwtichToBoldRegular();
Ali
la source
0
 txtText.Font = new Font("Segoe UI", 8,FontStyle.Bold);
 //Font(Font Name,Font Size,Font.Style)
Shanmuga Priyan
la source