Bir metin kutusunun metnini çalışma zamanında nasıl kalın olacak şekilde ayarlayabilirim?


101

Windows formları kullanıyorum ve belirli bir değer ise, ara sıra metni kalın yapmak istediğim bir metin kutum var.

Yazı tipi özelliklerini çalışma zamanında nasıl değiştiririm?

Textbox1.Font.Bold adında bir özellik olduğunu görüyorum, ancak bu bir Get only özelliği.

Yanıtlar:


189

Fontun bold özelliği salt okunurdur, ancak metin kutusunun gerçek font özelliği değildir. Metin kutusunun yazı tipini aşağıdaki gibi kalın olarak değiştirebilirsiniz:

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

Ve sonra tekrar:

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

1
Teşekkürler! vay, bu hayal ettiğimden çok daha kolaydı. Sanırım bu, yazı tipinin bir dizge gibi olduğu anlamına gelir, bir kez oluşturduğunuzda, onu değiştiremezsiniz. bunun yalnızca yeni bir örneğini bildirebilirsiniz.
Diskdrive

2
Evet, yaratıldıktan sonra durumunu değiştirememe açısından dizge gibi davranıyor gibi görünüyor, yani değişmez . Ancak, Yazı Tipi'nin değişmez olduğuna işaret eden MSDN makaleleri olmasına rağmen, Yazı Tipi için asıl referans bunu belirtmez.
Tim Lloyd

bir bağlantı düğmesi için bu benim için çalıştı:
button.Font.Bold

Kısmi metin için de aynı şey yapılabilir mi? Demek istediğim, metnin sadece bir bölümünü vurgulamak istiyorum.
Anıl

3

Uygulamanıza bağlı olarak, muhtemelen bu Yazı Tipi atamasını ya metin değişikliğinde ya da söz konusu metin kutusunun odağında / odaklamasında kullanmak isteyeceksiniz.

Aşağıda neye benzeyebileceğine dair hızlı bir örnek verilmiştir (boş form, sadece bir metin kutusuyla. Metin "kalın", büyük / küçük harfe duyarlı olmadığında yazı tipi kalın olur):

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

Aşağıdaki gibi Normal Stil ve Kalın StilExtension arasında geçiş yapmak için yöntemi kullanabilirsiniz :

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

Ve kullanım:

textBox1.SwtichToBoldRegular();

1

İşte kalın, altı çizili ve italik arasında geçiş yapmak için bir örnek .

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

0
 txtText.Font = new Font("Segoe UI", 8,FontStyle.Bold);
 //Font(Font Name,Font Size,Font.Style)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.