IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Mettre une partie d'un Texte en couleur [Débutant]


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2020
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Novembre 2020
    Messages : 85
    Points : 42
    Points
    42
    Par défaut Mettre une partie d'un Texte en couleur
    Salut à tous,
    Je souhaite mettre une partie d'un texte d'un Label, ou TextBox ou autre... en couleur.
    Je m'explique.
    je voudrais affaire un truc du genre :
    Coucou, tu es NomUtilisateur. Le reste de mon texte...
    J'ai chercher un peut partout, mais je ne trouve pas comment faire.
    j'ai trouvé ce code sur pas mal de forum, mais cela ne fonctionne pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RichTxtBx.AppendText("Coucou, tu es  ", Color.Black);
    RichTxtBx.AppendText("NomUtilisateur ", Color.Red);
    RichTxtBx.AppendText(". Le reste de mon texte...", Color.Black);
    cela non plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RichTxtBx.AppendText("Coucou, tu es  ");
    RichTxtBx.SelectionColor=Color.Red;
    RichTxtBx.AppendText("NomUtilisateur ");
    RichTxtBx.SelectionColor=Color.Black;
    RichTxtBx.AppendText(". Le rest de mon texte...", Color.Black);
    Si vous avez une idée...

    Merci.

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 639
    Points : 2 148
    Points
    2 148
    Par défaut
    Bonjour,

    S'agit-il d'un Label ou d'une TextBox ? Car la solution n'est pas la même.

    Vu les exemples que tu as données, je dirais que tu pars sur une TextBox et donc une RichTextBox (la TextBox normale ne gère pas les couleurs multiples).

    Ta première solution ne marche pas car la méthode AppendText ne prends en compte qu'un seul paramètre, le texte. Mais je vois d'où viens l'erreur, tu as repris un exemple donnée avec une méthode d'extension, du coup il te suffit de l'implémenter et voilà.

    Tu rajoutes cette classe dans un fichier du même nom :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static class RichTextBoxExtensions
        {
            public static void AppendText(this RichTextBox box, string text, Color color)
            {
                box.SelectionStart = box.TextLength;
                box.SelectionLength = 0;
     
                box.SelectionColor = color;
                box.AppendText(text);
                box.SelectionColor = box.ForeColor;
            }
        }
    Et voilà, tu reprends ta première solution et ça devrait marcher nickel.




    Si tu pars plutôt sur un Label, il te suffit d'en faire un uniquement pour afficher le nom de l'utilisateur d'une couleur différente et de revoir un peu la disposition du tout.

    Tu peux même mettre tous tes labels dans un FlowLayoutPanel pour ne pas t'embêter avec la mise en page.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 71
    Points : 50
    Points
    50
    Par défaut
    Ta méthode semble être la bonne je l'ai déjà utilisé auparavant vérifie bien avec le debugueur

  4. #4
    Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2020
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Novembre 2020
    Messages : 85
    Points : 42
    Points
    42
    Par défaut
    Re,
    merci pour vos réponses.
    En fait, je pense que mon problème est que j'ai posé une System.Windows.Controls.RichTextBox et non une System.Windows.Forms.RichTextBox.
    J'ai le message :
    conversion impossible de 'System.Windows.Controls.RichTextBox' en 'System.Windows.Forms.RichTextBox'
    Par contre, je n'arrive pas a changer...

  5. #5
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 639
    Points : 2 148
    Points
    2 148
    Par défaut
    Bonsoir,

    Apparemment tu essayes de mixer du WPF et du WinForm, ton programme utilise lequel ?

  6. #6
    Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2020
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Novembre 2020
    Messages : 85
    Points : 42
    Points
    42
    Par défaut
    Salut,
    euh... Framework 4.7.2, Application Windows
    Je pense WPF... Comment m'en assurer ?

  7. #7
    Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2020
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Novembre 2020
    Messages : 85
    Points : 42
    Points
    42
    Par défaut
    Re,
    Je suis donc bien WPF.
    J'ai trouvé cela, qu'en pensez-vous ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    RTBxNomUtilisateurDuPC.Document.Blocks.Clear();
     
    TextRange rangeOfText1 = new TextRange(RTBxNomUtilisateurDuPC.Document.ContentEnd, RTBxNomUtilisateurDuPC.Document.ContentEnd);
    rangeOfText1.Text = "Vous êtes connectez en tant que ";
    rangeOfText1.ApplyPropertyValue(TextElement.ForegroundProperty, System.Windows.Media.Brushes.Black);
    rangeOfText1.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Regular);
     
    TextRange rangeOfText2 = new TextRange(RTBxNomUtilisateurDuPC.Document.ContentEnd, RTBxNomUtilisateurDuPC.Document.ContentEnd);
    rangeOfText2.Text = System.Environment.UserName;
    rangeOfText2.ApplyPropertyValue(TextElement.ForegroundProperty, System.Windows.Media.Brushes.Red);
    rangeOfText2.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);
     
    TextRange rangeOfText3 = new TextRange(RTBxNomUtilisateurDuPC.Document.ContentEnd, RTBxNomUtilisateurDuPC.Document.ContentEnd);
    rangeOfText3.Text = ", sur le Domaine ";
    rangeOfText3.ApplyPropertyValue(TextElement.ForegroundProperty, System.Windows.Media.Brushes.Black);
    rangeOfText3.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Regular);
     
    TextRange rangeOfText4 = new TextRange(RTBxNomUtilisateurDuPC.Document.ContentEnd, RTBxNomUtilisateurDuPC.Document.ContentEnd);
    rangeOfText4.Text = System.Environment.UserDomainName;
    rangeOfText4.ApplyPropertyValue(TextElement.ForegroundProperty, System.Windows.Media.Brushes.Red);
    rangeOfText4.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);
    En tout cas ça fonctionne...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CS4] Comment placer une partie d'un texte en couleur ?
    Par henri68 dans le forum Dreamweaver
    Réponses: 5
    Dernier message: 14/01/2013, 18h06
  2. mettre une partie d'un texte en gras
    Par LesLemmings dans le forum Jasper
    Réponses: 7
    Dernier message: 20/11/2012, 22h15
  3. [E-03]Mettre une partie d'une chaine de caractères en couleur
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/03/2009, 11h22
  4. Réponses: 3
    Dernier message: 07/12/2008, 09h40
  5. [ListBox] Mettre une partie du texte d'un item en gras
    Par Sergio29 dans le forum Delphi
    Réponses: 2
    Dernier message: 28/01/2007, 19h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo