Como faço para definir o texto de uma caixa de texto para negrito em tempo de execução?

98

Estou usando formulários do Windows e tenho uma caixa de texto que ocasionalmente gostaria de deixar o texto em negrito se for um determinado valor.

Como altero as características da fonte em tempo de execução?

Vejo que há uma propriedade chamada textbox1.Font.Bold, mas esta é uma propriedade Get only.

Unidade de disco
fonte

Respostas:

181

A propriedade bold da própria fonte é somente leitura, mas a propriedade real da fonte da caixa de texto não é. Você pode alterar a fonte da caixa de texto para negrito da seguinte maneira:

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

E então de volta:

  textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);
Tim Lloyd
fonte
1
obrigado! uau, isso foi muito mais fácil do que eu imaginava. Acho que isso significa que uma fonte é como uma string, uma vez que você a cria, você não pode alterá-la. você só pode declarar uma nova instância dele.
Diskdrive
2
Sim, parece se comportar como string em termos de não ser capaz de mudar seu estado depois de criado, ou seja, é imutável . No entanto, embora haja artigos do MSDN que referem que a fonte é imutável, a referência real para a fonte em si não afirma isso.
Tim Lloyd
para um linkbutton funcionou para mim: button.Font.Bold = true
deebs
O mesmo pode ser feito para um texto parcial? Quero dizer, quero destacar apenas uma parte do texto.
Anil
3

Dependendo do seu aplicativo, você provavelmente desejará usar essa atribuição de fonte na alteração do texto ou no foco / desfoque da caixa de texto em questão.

Aqui está um exemplo rápido de como poderia ser (forma vazia, com apenas uma caixa de texto. A fonte fica em negrito quando o texto aparece em 'negrito', não diferencia maiúsculas de 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
fonte
1

Você pode usar o Extensionmétodo para alternar entre o estilo regular e o estilo negrito conforme abaixo:

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 uso:

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