Wie setze ich den Text eines Textfelds zur Laufzeit fett?

98

Ich verwende Windows Forms und habe ein Textfeld, das ich gelegentlich fett formatieren möchte, wenn es sich um einen bestimmten Wert handelt.

Wie ändere ich die Schriftmerkmale zur Laufzeit?

Ich sehe, dass es eine Eigenschaft namens textbox1.Font.Bold gibt, aber dies ist eine Get only-Eigenschaft.

Festplatte
quelle

Antworten:

181

Die fette Eigenschaft der Schriftart selbst ist schreibgeschützt, die tatsächliche Schrifteigenschaft des Textfelds jedoch nicht. Sie können die Schriftart des Textfelds wie folgt fett ändern:

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

Und dann wieder zurück:

  textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);
Tim Lloyd
quelle
1
Vielen Dank! Wow, das war viel einfacher als ich es mir vorgestellt hatte. Ich denke, das bedeutet, dass eine Schriftart wie eine Zeichenfolge ist. Sobald Sie sie erstellt haben, können Sie sie nicht mehr ändern. Sie können nur eine neue Instanz davon deklarieren.
Diskdrive
2
Ja, es scheint sich wie ein String zu verhalten, da es seinen einmal erstellten Status nicht ändern kann, dh unveränderlich ist . Obwohl es MSDN-Artikel gibt, die darauf verweisen, dass Font unveränderlich ist, wird dies in der tatsächlichen Referenz für Font selbst nicht angegeben.
Tim Lloyd
Für einen Linkbutton funktionierte dies für mich: button.Font.Bold = true
deebs
Kann das Gleiche für Teiltext getan werden? Ich möchte nur einen Teil des Textes hervorheben.
Anil
3

Abhängig von Ihrer Anwendung möchten Sie diese Schriftzuweisung wahrscheinlich entweder bei Textänderungen oder beim Fokussieren / Aufheben der Fokussierung des betreffenden Textfelds verwenden.

Hier ist ein kurzes Beispiel dafür, wie es aussehen könnte (leeres Formular mit nur einem Textfeld. Die Schrift wird fett, wenn der Text "fett" lautet, ohne Berücksichtigung der Groß- und Kleinschreibung):

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

Mit der folgenden ExtensionMethode können Sie zwischen regulärem und fettem Stil wechseln :

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

Und Verwendung:

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