Bagaimana cara mengatur teks kotak teks menjadi tebal pada saat berjalan?

98

Saya menggunakan formulir Windows dan saya memiliki kotak teks yang sesekali ingin saya buat teksnya tebal jika nilainya tertentu.

Bagaimana cara mengubah karakteristik font pada waktu proses?

Saya melihat bahwa ada properti bernama textbox1.Font.Bold tetapi ini adalah properti Dapatkan saja.

Diskdrive
sumber

Jawaban:

181

Properti huruf tebal dari fonta itu sendiri adalah hanya baca, tetapi properti font sebenarnya dari kotak teks tidak. Anda dapat mengubah font kotak teks menjadi tebal sebagai berikut:

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

Dan kemudian kembali lagi:

  textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);
Tim Lloyd
sumber
1
Terima kasih! wow, itu jauh lebih mudah dari yang saya bayangkan. Jadi saya rasa itu berarti font itu seperti string, setelah Anda membuatnya, Anda tidak dapat mengubahnya. Anda hanya dapat mendeklarasikan contoh baru darinya.
Diskdrive
2
Ya tampaknya berperilaku seperti string dalam hal tidak dapat mengubah statusnya setelah dibuat yaitu tidak dapat diubah . Namun, meskipun ada artikel MSDN yang merujuk pada Font yang tidak dapat diubah, referensi sebenarnya untuk Font itu sendiri tidak menyatakan ini.
Tim Lloyd
untuk tautantombol ini berhasil untuk saya: button.Font.Bold = true
deebs
Bisakah hal yang sama dilakukan untuk teks parsial? Maksud saya, saya hanya ingin menyoroti sebagian teks.
Anil
3

Bergantung pada aplikasi Anda, Anda mungkin ingin menggunakan penetapan Font itu baik pada perubahan teks atau fokus / tidak fokus kotak teks yang dimaksud.

Berikut adalah contoh singkat bagaimana tampilannya (formulir kosong, hanya dengan kotak teks. Font berubah tebal saat teks terbaca 'tebal', tidak peka huruf besar / kecil):

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

Anda dapat menggunakan Extensionmetode untuk beralih antara Gaya Biasa dan Gaya Tebal seperti di bawah ini:

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

Dan penggunaan:

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

Berikut adalah contoh untuk mengganti tebal, garis bawah, dan miring.

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