2013-06-24 46 views
9

Tôi biết có vô số câu hỏi "cách in đậm văn bản" ở đây, nhưng không có câu trả lời nào giúp ích, tôi nghĩ có thể Hộp văn bản đa dạng đang được tạo khi chạy.Hộp văn bản đa dạng - Bold

Tôi đang làm cho một khách hàng trò chuyện, vì vậy tôi có một hộp văn bản giàu chia tay trong đường dây và các thông điệp như sau: {Name}: {nhắn} \ r \ n

Tôi muốn Bolden tên, tôi đã thử nhiều ví dụ mã, nhưng đây là ví dụ gần nhất mà tôi đã thực hiện:

int length = textBox.Text.Length; 
textBox.Text += roomChatMessage.from + ": " + roomChatMessage.text + "\r\n"; 
textBox.Select(length, roomChatMessage.from.Length); 
textBox.SelectionFont = new Font(textBox.Font, FontStyle.Bold); 

Thông điệp đầu tiên, nó hoạt động hoàn toàn tốt, tên được in đậm. Nhưng khi tôi thêm một thông báo thứ hai, mọi thứ sẽ chuyển sang màu đậm mặc dù vòng thứ hai tôi đang chọn chỉ mục bắt đầu (ví dụ này là 37) nhưng mọi thứ chỉ chuyển sang màu đậm, tất cả các thông điệp quá khứ!

Bất kỳ ý tưởng nào về điều gì có thể gây ra điều này? Cảm ơn bạn trước!

Trả lời

7

Dòng này là một vấn đề:

textBox.Text += roomChatMessage.from + ": " + roomChatMessage.text + "\r\n"; 

Bạn đang thay thế các định dạng và các văn bản với phiên bản mới này của một chuỗi, và có lẽ là chọn lên các font chữ đậm từ bản cập nhật cuối cùng.

Hãy thử sử dụng AppendText thay vì:

textBox.AppendText(roomChatMessage.from + ": " + roomChatMessage.text + "\r\n"); 
+0

Bạn thưa bạn, là một thiên tài! Điều này đã khiến tôi khó hiểu trong 3 giờ qua! Cảm ơn bạn! –

5

Dưới đây là một số mã tôi đã sử dụng một thời gian:

var sb = new StringBuilder(); 
     sb.Append(@"{\rtf1\ansi"); 
     sb.Append(@"\b Name: \b0 "); 
     sb.Append((txtFirstName.Text); 
     sb.Append(@" \line "); 
     sb.Append(@"\b DOB: \b0 "); 
     sb.Append(txtDOBMonth.Text); 
     sb.Append(@" \line "); 
     sb.Append(@"\b ID Number: \b0 "); 
     sb.Append(txtIdNumber.Text); 
     sb.Append(@" \line \line "); 
     sb.Append(@"}"); 

rtxtRequest.Rtf = sb.ToString(); 

nếu bạn nối thêm @ "\ rtf1 \ ansi" bạn có thể sử dụng \ b0 \ b và tuyên bố táo bạo trong chuỗi. Và \ dòng tạo ra một dòng mới. Bạn cũng có thể làm gạch chân, vv Tôi thấy nó dễ dàng hơn để xây dựng các String như thế này hơn là áp dụng các thuộc tính.

+0

Một điều khác cần chú ý là bạn gán này để .rtf, không .text. Cảm ơn bạn đã giúp đỡ! – Chad

9
ObjRichTextBox.SelectionFont = new Font(ObjRichTextBox.Font, FontStyle.Bold); 

ObjRichTextBox.AppendText("BOLD TEXT APPEARS HERE"); 

ObjRichTextBox.SelectionFont = new Font(ObjRichTextBox.Font, FontStyle.Regular); 

ObjRichTextBox.AppendText("REGULAR TEXT APPEARS HERE"); 

Hope this helps :)

2

Trong Visual Studio bạn có thể sử dụng mã ngắn này:

richTextBox1.Rtf = @"{\rtf1\ansi This is in \b bold\b0.}"; 

Nó sẽ là:

Đây là trong đậm

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