17 votes

Zone de texte riche - Gras

Je sais qu'il y a beaucoup de questions sur "comment mettre en gras un texte" ici, mais aucune des réponses n'aide, je pense que c'est peut-être parce que la Zone de Texte en Rich Text est créée à l'exécution.

Je fais un client de chat, donc j'ai une zone de texte en Rich Text divisée en lignes et les messages sont les suivants : {Nom} : {Message} \r\n

Je veux mettre en gras le nom, j'ai essayé de nombreux exemples de code, mais c'est le plus proche de ce qui fonctionne :

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

Le premier message, ça fonctionne très bien, le nom est en gras. Mais quand j'ajoute un deuxième message, tout devient en gras même si la deuxième fois je sélectionne l'indice de début (qui dans cet exemple est 37) mais tout devient juste en gras, tous les messages passés aussi !

Une idée de ce qui pourrait causer cela ? Merci d'avance !

20voto

Jonesy Points 5487

Voici un code que j'ai utilisé une fois :

var sb = new StringBuilder();
        sb.Append(@"{\rtf1\ansi");
        sb.Append(@"\b Nom: \b0 ");
        sb.Append(txtFirstName.Text);
        sb.Append(@" \line ");
        sb.Append(@"\b Date de naissance: \b0 ");
        sb.Append(txtDOBMonth.Text);
        sb.Append(@" \line ");
        sb.Append(@"\b Numéro d'identification: \b0 ");
        sb.Append(txtIdNumber.Text);
        sb.Append(@" \line \line ");
        sb.Append(@"}");

richTextBox.Rtf = sb.ToString();

si vous ajoutez @"\rtf1\ansi" vous pouvez utiliser \b et \b0 pour déclarer du texte en gras dans la chaîne. Et \line crée une nouvelle ligne. Vous pouvez également faire du souligné, etc. J'ai trouvé plus facile de construire la chaîne de cette façon que d'appliquer des propriétés.

2voto

Arclight Points 493

Je pense qu'il peut être plus facile d'utiliser la propriété RichTextBox.Rtf lorsque vous effectuez ce type d'action, comme mentionné ici:

MSDN: Code: Formatting Characters in Bold in a RichTextBox Control (Visual C#)

Puisque le contenu de votre zone de texte augmente, la gestion des entités de sélection peut finir par devenir fastidieuse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X