2013-06-24 15 views
9

Wiem, że istnieje mnóstwo pytań "jak pogrubić tekst" tutaj, ale żadna z odpowiedzi nie pomaga, myślę, że może się zdarzyć, że pole tekstu sformatowanego jest tworzone w czasie wykonywania.Pole tekstu sformatowanego - pogrubione

Robię klienta IRC, więc mam pole tekstowe bogatych podzielone na linie, a komunikaty są następujące: {imię} {Wiadomość} \ r \ n

Chcę Bolden nazwa, próbowałem wiele przykładów kodu, ale to jest najbliższy Muszę to działa:

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

pierwszy komunikat, że działa perfekcyjnie, nazwa jest pogrubione. Ale kiedy dodaję drugą wiadomość, wszystko staje się odważne, mimo że za drugim razem wybieram indeks początkowy (który jest tym przykładem to 37), ale wszystko po prostu odmienia pogrubienie, wszystkie poprzednie wiadomości też!

Każdy pomysł na to, co może to spowodować? Z góry dziękuję!

Odpowiedz

7

Linia ta jest problem:

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

wymieniasz formatowanie i tekst z tej nowej wersji sznurku, i prawdopodobnie jest podniesienie pogrubioną czcionką od ostatniej aktualizacji.

Spróbuj użyć appendText zamiast:

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

Jesteście, jesteście geniuszem! To zastanawiało mnie przez ostatnie 3 godziny! Dziękuję Ci! –

5

Oto niektóre kodu użyłem raz:

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

jeśli dołączyć @ "\ rtf1 \ ANSI" można użyć \ b oraz \ b0 zadeklarować śmiały wewnątrz łańcucha. I \ line tworzy nową linię. Możesz także podkreślić, itp. Znalazłem łatwiejsze budowanie łańcucha w ten sposób niż stosowanie właściwości.

+0

Inną rzeczą, aby zanotować to, że można przypisać to .rtf, nie .text. Dzięki za pomoc! – 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"); 

Nadzieja to pomaga :)

2

W programie Visual Studio można wykorzystać ten krótki kod:

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

To będzie:

Jest to pogrubioną

Powiązane problemy