113 votes

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

J'utilise des formulaires Windows et j'ai une zone de texte dont je voudrais occasionnellement mettre le texte en gras s'il atteint une certaine valeur.

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

Je vois qu'il y a une propriété appelée textbox1.Font.Bold mais c'est une propriété Get only.

215voto

Tim Lloyd Points 23571

La propriété de gras de la police elle-même est en lecture seule, mais la propriété de la police 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);

1 votes

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 de caractères, une fois que vous la créez, vous ne pouvez pas la changer. vous pouvez seulement déclarer une nouvelle instance de celle-ci.

2 votes

Oui, il semble se comporter comme une chaîne de caractères, c'est-à-dire qu'il ne peut pas changer d'état une fois créé. inmutable . Cependant, bien que certains articles du MSDN fassent référence à l'immuabilité de la police, la référence réelle de la police elle-même ne l'indique pas.

0 votes

Pour un bouton de lien, cela a fonctionné pour moi : button.Font.Bold = true

4voto

Robert Hui Points 581

En fonction de votre application, vous voudrez probablement utiliser cette affectation de police soit sur le changement de texte, soit sur le focus/défocus de la zone de texte en question.

Voici un exemple rapide de ce à quoi il pourrait ressembler (formulaire vide, avec juste une zone de texte. La police devient grasse lorsque le texte indique '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);
        }
    }
}

2voto

Derek Points 5127

Voici un exemple pour basculer vers gras, soulignés et italiques.

   protected override bool ProcessCmdKey( ref Message msg, Keys keyData )
   {
      if ( ActiveControl is RichTextBox r )
      {
         if ( keyData == ( Keys.Control | Keys.B ) )
         {
            r.SelectionFont = new Font( r.SelectionFont, r.SelectionFont.Style ^ FontStyle.Bold ); // XOR will toggle
            return true;
         }
         if ( keyData == ( Keys.Control | Keys.U ) )
         {
            r.SelectionFont = new Font( r.SelectionFont, r.SelectionFont.Style ^ FontStyle.Underline ); // XOR will toggle
            return true;
         }
         if ( keyData == ( Keys.Control | Keys.I ) )
         {
            r.SelectionFont = new Font( r.SelectionFont, r.SelectionFont.Style ^ FontStyle.Italic ); // XOR will toggle
            return true;
         }
      }
      return base.ProcessCmdKey( ref msg, keyData );
   }

1voto

combo_ci Points 2187

Vous pourriez utiliser Extension pour basculer entre Style normal y Style audacieux 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'usage :

textBox1.SwtichToBoldRegular();

0voto

Shanmuga Priyan Points 30
 txtText.Font = new Font("Segoe UI", 8,FontStyle.Bold);
 //Font(Font Name,Font Size,Font.Style)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X