¿Cómo configuro el texto de un cuadro de texto en negrita en tiempo de ejecución?

98

Estoy usando formularios de Windows y tengo un cuadro de texto que ocasionalmente me gustaría poner el texto en negrita si tiene un cierto valor.

¿Cómo cambio las características de la fuente en tiempo de ejecución?

Veo que hay una propiedad llamada textbox1.Font.Bold pero esta es una propiedad de solo Obtener.

Disco duro
fuente

Respuestas:

181

La propiedad en negrita de la fuente en sí es de solo lectura, pero la propiedad de fuente real del cuadro de texto no lo es. Puede cambiar la fuente del cuadro de texto a negrita de la siguiente manera:

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

Y luego de vuelta otra vez:

  textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);
Tim Lloyd
fuente
1
¡Gracias! wow, eso fue mucho más fácil de lo que imaginaba. Entonces supongo que eso significa que una fuente es como una cadena, una vez que la crea, no puede cambiarla. solo puede declarar una nueva instancia de él.
Diskdrive
2
Sí, parece comportarse como una cadena en términos de no poder cambiar su estado una vez creado, es decir, es inmutable . Sin embargo, aunque hay artículos de MSDN que hacen referencia a que Font es inmutable, la referencia real de Font en sí no lo dice.
Tim Lloyd
para un botón de enlace, esto funcionó para mí: button.Font.Bold = true
deebs
¿Se puede hacer lo mismo con el texto parcial? Quiero decir, quiero resaltar solo una parte del texto.
Anil
3

Dependiendo de su aplicación, probablemente querrá usar esa asignación de fuente, ya sea en el cambio de texto o en el enfoque / desenfoque del cuadro de texto en cuestión.

Aquí hay una muestra rápida de cómo podría verse (formulario vacío, con solo un cuadro de texto. La fuente se vuelve negrita cuando el texto dice "negrita", no distingue entre mayúsculas y minúsculas):

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
fuente
1

Puede usar el Extensionmétodo para cambiar entre estilo regular y estilo negrita como se muestra a continuación:

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

Y uso:

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