Ricca Casella Di Testo In Grassetto

So che ci sono un sacco di “come bolden testo” domande qui, ma nessuna delle risposte stanno aiutando, penso che potrebbe essere che la Casella di Testo viene creato in fase di runtime.

Sto facendo un client di chat, quindi non ho una casella di testo rtf divisi in linee e i messaggi sono come segue:
{Nome}: {Messaggio} \r\n

Voglio bolden il nome, ho provato molti esempi di codice, ma questo è il più vicino ho avuto modo di lavorare:

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

Il primo messaggio, funziona perfettamente, il nome è in grassetto. Ma quando aggiungo un secondo messaggio, tutto si trasforma grassetto, anche se la seconda volta ho scelto l’indice di partenza (Che in questo esempio è di 37), ma tutto si trasforma in grassetto, tutti gli ultimi messaggi troppo!

Qualche idea di cosa potrebbe causare questo?
Grazie in anticipo!

InformationsquelleAutor Tom O | 2013-06-24

 

5 Replies
  1. 10

    Questa linea è un problema:

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

    Si sta sostituendo la formattazione e il testo con questa nuova versione di una stringa, ed è probabilmente raccogliendo il tipo di carattere grassetto dall’ultimo aggiornamento.

    Provare a utilizzare metodo appendtext invece:

    textBox.AppendText(roomChatMessage.from + ": " + roomChatMessage.text + "\r\n");
  2. 17
     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");

    Spero che questo aiuti 🙂

  3. 9

    Ecco il codice che ho usato una sola volta :

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

    se si aggiunge @”\rtf1\ansi”, è possibile utilizzare \b e \b0 a dichiarare in grassetto all’interno della stringa. E \line crea una nuova riga. Si può fare anche sottolineare, etc. L’ho trovato più facile costruire la Stringa di applicazione di proprietà.

    • L’altra cosa da annotare è che si assegna questo .Rtf, non .Di testo. Grazie per il vostro aiuto!
  4. 3

    In Visual Studio, è possibile utilizzare questo codice breve:

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

    Sarà:

    Questo è in grassetto

Lascia un commento