2010-11-16 20 views
9

Tôi có một vấn đề nhỏ. Tôi có 1 RichTextBox và 2 Buttons.Trừ cờ từ phông chữPhong cách (Toggling FontStyles) [C#]

Tôi có 2 nút để "chuyển đổi Kiểu chữ đậm" và "chuyển đổi Kiểu chữ nghiêng".

Tôi muốn chuyển đổi kiểu phông chữ mà không ảnh hưởng đến các kiểu phông chữ khác. Tôi hy vọng bạn hiểu tôi.

Dưới đây đang hoạt động khi kết hợp FontStyles nhưng không được làm việc khi chia/trừ đi FontStyles.

private void button1_Click(object sender, EventArgs e) 
{ 
    richTextBox1.SelectionFont = new Font(richTextBox1.Font, (richTextBox1.SelectionFont.Bold == false ? richTextBox1.SelectionFont.Style | FontStyle.Bold : richTextBox1.SelectionFont.Style)); 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
    richTextBox1.SelectionFont = new Font(richTextBox1.Font, (richTextBox1.SelectionFont.Italic == false ? richTextBox1.SelectionFont.Style | FontStyle.Italic : richTextBox1.SelectionFont.Style)); 
} 
  1. tôi làm cho văn bản đã chọn Bold văn bản
  2. tôi làm chọn Nghiêng
  3. Tôi muốn loại bỏ Nghiêng trong khi Bold vẫn còn hoạt động (hoặc ngược lại)
+0

Một cách tiếp cận tương tự với giải pháp cho điều này cũng áp dụng cho các điều khiển 'TextBox'. Xem bình luận của tôi trong câu trả lời dưới đây. –

Trả lời

8

Cách đơn giản nhất là để sử dụng bitwise XOR (^), chỉ chuyển đổi giá trị:

private void button1_Click(object sender, EventArgs e) 
{ 
    richTextBox1.SelectionFont = new Font(richTextBox1.Font, 
     richTextBox1.SelectionFont.Style^FontStyle.Bold); 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
    richTextBox1.SelectionFont = new Font(richTextBox1.Font, 
     richTextBox1.SelectionFont.Style^FontStyle.Italic); 
} 
+0

Cảm ơn, nó đã hoạt động !! – Dada

+4

Lần theo dõi! Nếu lựa chọn văn bản hiện tại có nhiều hơn một phông chữ, SelectionFont sẽ rỗng http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k(SYSTEM.WINDOWS.FORMS.RICHTEXTBOX.SELECTIONFONT); (TargetFrameworkMoniker-% 22.NETFRAMEWORK% 2cVERSION% 3dV4.0% 22); k (DevLang-VB) & rd = true – Matthieu

+0

Cách tiếp cận tương tự cũng hoạt động với các điều khiển 'TextBox'. Sự khác biệt là 'SelectionFont' trong ví dụ trên sẽ cần phải được thay đổi thành' Font'. –

Các vấn đề liên quan