ฉันใช้แบบฟอร์ม Windows และฉันมีกล่องข้อความที่ฉันต้องการทำให้ข้อความเป็นตัวหนาในบางครั้งหากมีค่า
ฉันจะเปลี่ยนลักษณะแบบอักษรในขณะทำงานได้อย่างไร
ฉันเห็นว่ามีคุณสมบัติที่เรียกว่า textbox1.Font.Bold แต่นี่เป็นคุณสมบัติรับเท่านั้น
ฉันใช้แบบฟอร์ม Windows และฉันมีกล่องข้อความที่ฉันต้องการทำให้ข้อความเป็นตัวหนาในบางครั้งหากมีค่า
ฉันจะเปลี่ยนลักษณะแบบอักษรในขณะทำงานได้อย่างไร
ฉันเห็นว่ามีคุณสมบัติที่เรียกว่า textbox1.Font.Bold แต่นี่เป็นคุณสมบัติรับเท่านั้น
คำตอบ:
คุณสมบัติตัวหนาของฟอนต์นั้นอ่านได้อย่างเดียว แต่คุณสมบัติฟอนต์จริงของกล่องข้อความไม่ใช่ คุณสามารถเปลี่ยนแบบอักษรของกล่องข้อความเป็นตัวหนาได้ดังนี้:
textBox1.Font = new Font(textBox1.Font, FontStyle.Bold);
แล้วกลับมาอีกครั้ง:
textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);
ขึ้นอยู่กับแอปพลิเคชันของคุณคุณอาจต้องการใช้การกำหนดแบบอักษรนั้นกับการเปลี่ยนข้อความหรือโฟกัส / ไม่โฟกัสของกล่องข้อความที่เป็นปัญหา
นี่คือตัวอย่างสั้น ๆ ของสิ่งที่อาจมีลักษณะเช่นนี้ (รูปแบบว่างเปล่ามีเพียงช่องข้อความแบบอักษรจะเปลี่ยนเป็นตัวหนาเมื่อข้อความอ่านว่า "ตัวหนา" ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่):
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);
}
}
}
คุณสามารถใช้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();
นี่คือตัวอย่างสำหรับการสลับตัวหนาขีดเส้นใต้และตัวเอียง
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 );
}
txtText.Font = new Font("Segoe UI", 8,FontStyle.Bold);
//Font(Font Name,Font Size,Font.Style)