2013-06-24 21 views
9

Ich weiß, es gibt eine Menge von "wie zu bolden Text" Fragen hier, aber keine der Antworten helfen, ich denke, es kann sein, dass die Rich Text Box zur Laufzeit erstellt wird.Rich Text Box - Fett

Ich mache einen Chat-Client, so habe ich ein Rich-Text-Feld in Linien aufgespalten und die Nachrichten sind wie folgt: {Name}, {Nachricht} \ r \ n

ich Bolden wollen der Name, habe ich viele Code-Beispiele ausprobiert, aber das ist die nächste, die ich habe, um daran zu arbeiten:

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

die erste Nachricht, funktioniert es völlig in Ordnung, ist der Name fett gedruckt. Aber wenn ich eine zweite Nachricht hinzufüge, wird alles fett, auch wenn ich das zweite Mal den Startindex auswähle (was ist das Beispiel für 37), aber alles wird nur fett, all die vergangenen Nachrichten auch!

Irgendeine Idee, was das verursachen könnte? Vielen Dank im Voraus!

Antwort

7

Diese Zeile ist ein Problem:

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

Sie die Formatierung und den Text mit dieser neuen Version eines Strings ersetzt, und wird wahrscheinlich die Fettschrift aus dem letzten Update aufnimmt.

Versuchen AppendText anstelle:

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

Sie, Sir, sind ein Genie! Das hat mich in den letzten 3 Stunden verwirrt! Vielen Dank! –

5

Hier einige Code, den ich einmal verwendet:

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

wenn Sie anhängen @ "\ rtf1 \ ansi" Sie \ b und \ b0 zu erklären fett innerhalb der Zeichenfolge verwenden können. Und \ line erstellt eine neue Zeile. Sie können auch Unterstreichungen usw. vornehmen. Ich fand es einfacher, die Zeichenfolge so zu erstellen, als Eigenschaften anzuwenden.

+0

Die andere Sache zu notieren ist, dass Sie dies RTF zuweisen, nicht zu .text. Danke für Ihre Hilfe! – 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"); 

this helps :)

2

In Visual Studio Sie diesen kurzen Code verwenden können:

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

Es wird sein:

Dies ist in fett