2010-06-21 37 views
73

Tôi đang sử dụng các biểu mẫu Windows và tôi có một hộp văn bản mà thỉnh thoảng tôi muốn làm cho văn bản in đậm nếu đó là một giá trị nhất định.Làm cách nào để đặt văn bản của hộp văn bản thành chữ đậm ở thời gian chạy?

Làm cách nào để thay đổi các đặc điểm phông chữ trong thời gian chạy?

Tôi thấy rằng có một thuộc tính được gọi là textbox1.Font.Bold nhưng đây là thuộc tính Chỉ nhận.

Trả lời

128

Thuộc tính in đậm của chính phông chữ chỉ đọc, nhưng thuộc tính phông chữ thực tế của hộp văn bản thì không. Bạn có thể thay đổi font chữ của hộp văn bản để in đậm như sau:

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

Và sau đó trở lại một lần nữa:

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

cảm ơn! wow, đó là dễ dàng hơn nhiều so với tôi tưởng tượng. Vì vậy, tôi đoán rằng có nghĩa là một phông chữ giống như một chuỗi, một khi bạn tạo ra nó, bạn không thể thay đổi nó. bạn chỉ có thể khai báo một phiên bản mới của nó. – Diskdrive

+2

Có vẻ như nó hoạt động giống như chuỗi về việc không thể thay đổi trạng thái của nó khi được tạo, nghĩa là [không thay đổi] (http://en.wikipedia.org/wiki/Immutable_object). Tuy nhiên, mặc dù có các bài viết MSDN tham chiếu đến Phông chữ không thay đổi được, nhưng tham chiếu thực tế cho Phông chữ không thể hiện điều này. –

+0

cho một nút liên kết này làm việc cho tôi: button.Font.Bold = true – deebs

2

Tùy thuộc vào ứng dụng của bạn, có thể bạn sẽ muốn sử dụng mà phân Font hoặc văn bản thay đổi hoặc tập trung/không tập trung vào hộp văn bản được đề cập.

Dưới đây là một ví dụ nhanh chóng của những gì nó có thể trông giống như (hình thức trống rỗng, chỉ với một hộp Font biến đậmkhi văn bản đọc 'đậm', case-insensitive.):

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

Bạn có thể sử dụng Extension phương pháp để chuyển đổi giữa các Regular Phong cáchBold Phong cách như sau:

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

và sử dụng:

textBox1.SwtichToBoldRegular(); 
Các vấn đề liên quan