ฉันจะตั้งค่าข้อความของกล่องข้อความเป็นตัวหนาในขณะทำงานได้อย่างไร


102

ฉันใช้แบบฟอร์ม Windows และฉันมีกล่องข้อความที่ฉันต้องการทำให้ข้อความเป็นตัวหนาในบางครั้งหากมีค่า

ฉันจะเปลี่ยนลักษณะแบบอักษรในขณะทำงานได้อย่างไร

ฉันเห็นว่ามีคุณสมบัติที่เรียกว่า textbox1.Font.Bold แต่นี่เป็นคุณสมบัติรับเท่านั้น

คำตอบ:


193

คุณสมบัติตัวหนาของฟอนต์นั้นอ่านได้อย่างเดียว แต่คุณสมบัติฟอนต์จริงของกล่องข้อความไม่ใช่ คุณสามารถเปลี่ยนแบบอักษรของกล่องข้อความเป็นตัวหนาได้ดังนี้:

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

แล้วกลับมาอีกครั้ง:

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

1
ขอบคุณ! ว้าวมันง่ายกว่าที่ฉันคิดไว้มาก ดังนั้นฉันเดาว่านั่นหมายความว่าฟอนต์ก็เหมือนกับสตริงเมื่อคุณสร้างมันแล้วคุณจะไม่สามารถเปลี่ยนแปลงได้ คุณสามารถประกาศอินสแตนซ์ใหม่ได้เท่านั้น
Diskdrive

2
ใช่มันดูเหมือนจะทำตัวเหมือนสตริงในแง่ของการไม่สามารถที่จะเปลี่ยนสถานะของมันครั้งเดียวที่สร้างขึ้นคือมันไม่เปลี่ยนรูป อย่างไรก็ตามแม้ว่าจะมีบทความ MSDN ที่อ้างถึง Font ที่ไม่เปลี่ยนรูป แต่การอ้างอิงที่แท้จริงสำหรับ Font นั้นไม่ได้ระบุถึงสิ่งนี้
Tim Lloyd

สำหรับลิงก์ปุ่มนี้ใช้ได้กับฉัน: button.Font.Bold = true
deebs

สามารถทำสิ่งเดียวกันสำหรับข้อความบางส่วนได้หรือไม่ ฉันหมายความว่าฉันต้องการเน้นเพียงบางส่วนของข้อความ
Anil

3

ขึ้นอยู่กับแอปพลิเคชันของคุณคุณอาจต้องการใช้การกำหนดแบบอักษรนั้นกับการเปลี่ยนข้อความหรือโฟกัส / ไม่โฟกัสของกล่องข้อความที่เป็นปัญหา

นี่คือตัวอย่างสั้น ๆ ของสิ่งที่อาจมีลักษณะเช่นนี้ (รูปแบบว่างเปล่ามีเพียงช่องข้อความแบบอักษรจะเปลี่ยนเป็นตัวหนาเมื่อข้อความอ่านว่า "ตัวหนา" ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่):

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

คุณสามารถใช้Extensionวิธีการสลับระหว่างRegular StyleและBold Style ได้ดังนี้:

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

และการใช้งาน:

textBox1.SwtichToBoldRegular();

1

นี่คือตัวอย่างสำหรับการสลับตัวหนาขีดเส้นใต้และตัวเอียง

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.