Come faccio a impostare in grassetto il testo di una casella di testo in fase di esecuzione?


98

Sto usando Windows Form e ho una casella di testo che vorrei occasionalmente rendere il testo in grassetto se è un certo valore.

Come si modificano le caratteristiche del carattere in fase di esecuzione?

Vedo che esiste una proprietà chiamata textbox1.Font.Bold ma questa è una proprietà Get only.

Risposte:


181

La proprietà grassetto del carattere stesso è di sola lettura, ma non la proprietà effettiva del carattere della casella di testo. È possibile modificare il carattere della casella di testo in grassetto come segue:

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

E poi di nuovo:

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

1
Grazie! wow, è stato molto più facile di quanto immaginassi. Quindi immagino che questo significhi che un carattere è come una stringa, una volta creato, non puoi cambiarlo. puoi solo dichiararne una nuova istanza.
Diskdrive

2
Sì, sembra comportarsi come una stringa in termini di non essere in grado di cambiare il suo stato una volta creato, cioè è immutabile . Tuttavia, anche se esistono articoli MSDN che fanno riferimento a Font non modificabile, il riferimento effettivo per Font stesso non lo indica.
Tim Lloyd

per un linkbutton questo ha funzionato per me: button.Font.Bold = true
deebs

Si può fare la stessa cosa per il testo parziale? Voglio dire, voglio evidenziare solo una parte del testo.
Anil

3

A seconda della tua applicazione, probabilmente vorrai usare quell'assegnazione dei caratteri sia per la modifica del testo che per la messa a fuoco / sfocatura della casella di testo in questione.

Ecco un rapido esempio di come potrebbe apparire (modulo vuoto, con solo una casella di testo. Il carattere diventa in grassetto quando il testo è "grassetto", senza distinzione tra maiuscole e minuscole):

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

1

È possibile utilizzare Extensionil metodo per passare da Normale Stile e stile audace , come di seguito:

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

E utilizzo:

textBox1.SwtichToBoldRegular();

0
 txtText.Font = new Font("Segoe UI", 8,FontStyle.Bold);
 //Font(Font Name,Font Size,Font.Style)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.