2013-06-24 12 views
9

Burada "metnin nasıl kaydırılacağı" sorularının bir sürü olduğunu biliyorum, ancak yanıtların hiçbiri yardımcı olmadığından, Zengin Metin Kutusu'nun çalışma zamanında oluşturulmuş olabileceğini düşünüyorum.Zengin Metin Kutusu - Kalın

Ben bir sohbet istemcisi yapıyorum, bu yüzden bir zengin metin kutusu hatlarında bölünmüş olması ve aşağıdaki gibi mesajlar şunlardır: {Ad}: {Mesaj} \ r \ n

Ben Bolden istiyorum ad, birçok kod örneklerini denedi, ama bu o çalışma lazım en yakın olan:

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

ilk mesaj, o mükemmel çalışıyor kalın yazıyla. Ama ikinci bir mesaj eklediğimde, ikinci zaman diliminde olsa bile her şey koyulaşıyor, başlangıç ​​endeksini seçiyorum (Bu örnek 37'ydi) ama her şey sadece cesur, tüm geçmiş mesajlara dönüşüyor!

Buna neden olabilecek herhangi bir fikrin var mı? Şimdiden teşekkürler!

cevap

7

Bu çizgi bir sorun:

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

Sen biçimlendirme ve bir dizenin bu yeni sürümü ile metin değiştiriyorsanız ve muhtemelen son güncellemeden itibaren kalın yazı tipi kazanmaktadır.

yerine appendText kullanmayı deneyin:

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

Siz efendim, bir dahisin! Bu son 3 saat boyunca beni şaşırttı! Teşekkür ederim! –

5

Burada bir kez kullanılan bazı kod:

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

ekleyin.Yani eğer @ "\ rtf1 ansi \" sen dize içinde kalın beyan \ b ve \ b0 kullanabilirsiniz. Ve \ line yeni bir satır oluşturur. Ayrıca altını çizebilir, vb. Bunu uygulamak için özellikleri uygulamaktan daha kolay buldum.

+0

diğer şey, .text etmek değildir. Yardım ettiğin için teşekkür ederim! – 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"); 

Umut bu yardımcı olur :)

2

Visual Studio size bu kısa kodu kullanabilirsiniz:

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

O olacaktır:

Bu .rtf bu atama olduğunu not edin cesur