J'essaie de colorer les parties d'une chaîne à ajouter à un RichTextBox. J'ai une chaîne construite à partir de différentes chaînes.
string temp = "[" + DateTime.Now.ToShortTimeString() + "] " +
userid + " " + message + Environment.NewLine;
Voici à quoi ressemblerait le message une fois construit.
[21:23] Utilisateur: mon message ici.
Je veux que tout ce qui se trouve entre et y compris les crochets [9:23] soit d'une seule couleur, «utilisateur» d'une autre couleur et le message d'une autre couleur. Ensuite, j'aimerais que la chaîne soit ajoutée à mon RichTextBox.
Comment puis-je accomplir cela?
Réponses:
Voici une méthode d'extension qui surcharge la
AppendText
méthode avec un paramètre de couleur:Et voici comment vous l'utiliseriez:
Notez que vous remarquerez peut-être un scintillement si vous envoyez beaucoup de messages. Consultez cet article du coin C # pour des idées sur la façon de réduire le scintillement RichTextBox.
la source
box.Text += mystring
et donc toutes les couleurs ont disparu. Quand j'ai remplacé cela parbox.AppendText(mystring)
, cela a fonctionné comme un charme.AppendText(string text)
avec WinFormsJ'ai développé la méthode avec la police comme paramètre:
la source
C'est la version modifiée que j'ai mise dans mon code (j'utilise .Net 4.5) mais je pense que cela devrait aussi fonctionner sur 4.0.
Différences avec l'original:
la source
Je pense que modifier un "texte sélectionné" dans un RichTextBox n'est pas la bonne façon d'ajouter du texte coloré. Alors voici une méthode pour ajouter un "color block":
Depuis MSDN :
Je pense donc que vous devez diviser votre chaîne en fonction de la couleur des pièces et créer autant d'
Run
objets que nécessaire.la source
Ça marche pour moi! J'espère que cela vous sera utile!
la source
En sélectionnant le texte comme dit de quelqu'un, la sélection peut apparaître momentanément. Il
Windows Forms applications
n'y a pas d'autres solutions au problème, mais aujourd'hui, j'ai trouvé une mauvaise façon de résoudre le problème: vous pouvez mettre unPictureBox
chevauchement dans leRichtextBox
avec la capture d'écran de if, pendant la sélection et le changement de couleur ou de police, en le faisant après réapparaissent tous, lorsque l'opération est terminée.Le code est là ...
Mieux vaut utiliser WPF; cette solution n'est pas parfaite, mais pour Winform cela fonctionne.
la source
la source
À l'aide de Selection dans WPF, en agrégeant à partir de plusieurs autres réponses, aucun autre code n'est requis (à l'exception de l'énumération Severity et de la fonction GetSeverityColor)
la source
J'ai créé cette fonction après des recherches sur Internet car je voulais imprimer une chaîne XML lorsque vous sélectionnez une ligne dans une vue de grille de données.
et c'est comme ça que tu l'appelles
la source