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

Windows Forms Discussion :

Difference style de police dans une listbox


Sujet :

Windows Forms

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut Difference style de police dans une listbox
    Bonjour,
    J'affiche le resultat de ma DB dans une listebox et je voudrais mettre en gras les nom de champs.Donc, je souhaiterai avoir 2 polices differentes dans ma listbox. Est ce que cela est possible?
    Si vous avez d'autre moyen ....
    Merci

  2. #2
    Membre habitué Avatar de Saten
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 203
    Points : 133
    Points
    133
    Par défaut
    Je pense que ça va être difficile avec une listbox, essaie avec une listview, ça devrait être plus facile .

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    salut

    C possible et "simple"

    ListBox..

    Propriété : DrawMode = OwnerDraw (Fixe ou variable)
    Event : DrawItem

    Et dans le parametre DrawItemEventArg, tu trouveras info sur index de l'élément à dessiner, cadre ou cela doit être fait (bounds), etc...

    Donc, c'est plutot "simple" à faire !

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    Excuse moi, mais on ne doit pas avoir le meme niveau pour facile....
    J'ai créé ma fonction event :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
          {
    et apres je ne comprend pas vraiment ce que tu me dis?
    As tu un exmple ou plus d'explication?
    Merci de ton aide

  5. #5
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    je te dis

    Si ta listbox s'appelle Tresor

    Tresor.DrawMode = (Jesaisplusquoi).OwnerDrawVariable;

    Tresor.OnPaint += new .... TonHandleDePaint()

    Et dans le code de gestion du paint,

    Tu peux faire :

    Graphics g = e.Graphics;
    Font f = new Font("Arial",15);
    g.DrawString(Tresor.Item[e.Index], f, new SolidBrush(Color.Red),e.Bounds);

    Voila

    Si avec cela, tu n'y arrives pas, revois les bases des winforms

    Désolé d'être un peu "rude", mais bon... là, c'est vraiment simple ce que je t'explique !!!

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    L'idée d'aider une personne n'est pas de se la raconter....
    Tu n'as pas le couteau sous la gorge pour répondre de cette manière. Si cela t'embête d'expliquer des choses qui te semble NULLE et ÉVIDENTE ne t'embête pas a le faire il y aura bien une autre personne qui prendra de son temps et qui sera plus pédagogue que toi.

    Merci quand même de ton aide je vais ESSAYER d'être a la hauteur.

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    1) Je me la raconte pas !!! Mais si je te dis que faire telle ou telle chose n'est pas compliqué, c'est que je le pense réellement ! Après, suivant ton niveau tu peux trouver cela "plus ardu" que ce que j'estime moi ne pas l'être. Pour autant, je te donne des explications simples, précises et qui normalement, devrait te permettre d'apporter une solution au problème, à la question que tu soumets ici.

    Le role d'une réponse faite sur un forum n'est pas de t'expliquer TOUT non plus. Et logiquement, les informations que je t'ai écrite par 2 fois doivent être suffisante pour résoudre ton problème. Après, je pourrais aussi te donner tout le code nécessaire, mais j'aime autant "t'obliger" à te pencher sur un certains nombres de choses que de tout te mâcher. Si je te fournis le code, je ne suis pas sur que tu "sauras" interpréter une phrase genre : "Branche un evenement sur le OnDraw()".... donc, chacun sa pédagogie, mais au vue de l'expérience que j'ai dans l'informatique (soit un peu plus de 20 ans environ), je crois que tu es une des premières personnes à me qualifier de "peu pédagogue"...

    Et pourquoi cela peut m'embeter d'expliquer des choses nulles et évidentes ?
    C'est pas que cela m'embete, mais je SAIS pertinemment que ces choses là ont des réponses soit dans les forums ici, soit dans les tutoriaux, soit dans des livres concernant le C#.

    Personnellement, j'ai fait les efforts quand j'ai appris C# d'avoir des bouquins, ou des tutoriaux, ou autres sources provenant du net parce que je reste persuadé que ce que je découvre par moi-même s'apprendra mieux que ce que d'autres pourront me dire, surtout si je ne fais pas l'effort de chercher.

    J'ai pris sur mon temps pour répondre à ta question puisque j'ai même crée un projet sous VS2008 pour vérifier que ce que j'avançais se faisait de cette façon là.

    Après, tu penses ce que tu veux. Moi, personnellement, ça ne m'empechera pas de continuer à aider, orienter les gens sur ce site.

    Cordialement.

    A moins que d'autres interrogations ne te viennent pour des aspects programmations, je clos là la discussion pour ma part !

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    Bonjour,
    Je ne m'attends pas a ce que tu me fournisses le code. Loin de la. Je me suis mis au C# il a quelques semaines maintenant, et avant de poster une question sur le forum je m'assure que la reponse ne se trouve pas dans le livre sur lequel je bosse.
    Apres, que je sois le premier a te trouver "peu pedagogue" il y a une premiere a tout.

    Je ne me permettrai pas de te juger sur une reponse (ou plutot sur la maniere de repondre) qui t'as certainement pris de ton temps.

    Merci de ton aide quand meme.

  9. #9
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    ok

    Fight clos (humour)

    Au delà de cela, tu as réussi à faire ce que je te proposais ?

    Et pour info, le code que j'ai utilisé

    Une forme avec un bouton et une listbox (listbox1)
    sur le click du bouton :

    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
        private void button4_Click(object sender, EventArgs e)
            {
                listBox1.Items.Add("Item 1");
                listBox1.Items.Add("Item 2");
                listBox1.Items.Add("Item 3");
                listBox1.Items.Add("Item 4");
                listBox1.DrawMode = DrawMode.OwnerDrawFixed;
                listBox1.DrawItem+=new DrawItemEventHandler(listBox1_DrawItem);
            }
     
            private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
            {
                Graphics g = e.Graphics;
                string txt = listBox1.Items[e.Index].ToString();
                Font f = new Font("Arial", 10 * (e.Index+1));
                g.DrawString(txt, f, new SolidBrush(Color.Red), e.Bounds);
            }
    Dans le DrawItem, je crée une font de taille 10 * e.Index+1
    (c'est juste un cas d'utilisation)...

    Voilà

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    non je n'avais pas reussi faire tout ce que tu m'avais dit.
    En fait ce que je cherche a faire c'est sur une meme ligne de ma listBox avoir differente police.
    Ex : Nom: Mr. DUPONT Jean.

    Est ce que cela est possible?

  11. #11
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    oui c'est possible et simple

    Sur le meme principe que le code que je t'ai donné, au lieu de faire un seul
    DrawString(), tu peux en faire plusieurs

    1/ Tu découpes la chaine à afficher en plusieurs chaine (string.Split())

    Et ensuite, pour chaque chaine, tu utilises un DrawString() avec un font approprié

    Par contre, regardes du cote de MeasureItem (event de la listbox) pour fournir la taille de l'item ! (DrawMode = OwnerDrawVariable)...

    Après, faudra juste gérer le positionnement en "hauteur" des 2 ou X chaines

  12. #12
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    Genre ça :
    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
    22
    23
    24
    25
    26
    27
    28
    29
     
    private void button4_Click(object sender, EventArgs e)
            {
                listBox1.Items.Add("DUPONT Jean");
                listBox1.DrawMode = DrawMode.OwnerDrawVariable;
                listBox1.DrawItem+=new DrawItemEventHandler(listBox1_DrawItem);
                listBox1.MeasureItem+=new MeasureItemEventHandler(listBox1_MeasureItem);
            }
     
            private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
            {
                Graphics g = e.Graphics;
                string txt = listBox1.Items[e.Index].ToString();
                Font f1 = new Font("Arial", 20, GraphicsUnit.Pixel);
                Font f2 = new Font("Arial", 10, GraphicsUnit.Pixel);
                RectangleF r = e.Bounds;
                String[] textes = txt.Split(' ');
                SizeF longueurChaine = g.MeasureString(textes[0], f1);
                g.DrawString(textes[0], f1, new SolidBrush(Color.Red), r);
                r.Y += (g.MeasureString(textes[0], f1).Height - g.MeasureString(textes[1], f2).Height) - 3;
                r.X += longueurChaine.Width;
                g.DrawString(textes[1], f2, new SolidBrush(Color.Red), r);
            }
     
            private void listBox1_MeasureItem(object sender, MeasureItemEventArgs e)
            {
                Font f = new Font("Arial", 20);
                e.ItemHeight = f.Height;
            }

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    Ok effectivement, ce n'est pas encore a mon niveau ...
    Merci de ton aide je vais me pencher sur ton code pour l'adapter.

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

Discussions similaires

  1. Changer la police et couleur d'un texte dans une listbox
    Par kaisser dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/11/2009, 18h11
  2. Clique droit dans une ListBox
    Par LoicH dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/02/2005, 22h50
  3. [debutant] supprimer elements dans une listbox
    Par F.F. dans le forum C++Builder
    Réponses: 8
    Dernier message: 02/07/2004, 11h38
  4. [WIN32]tabulation dans une listbox
    Par stoluup dans le forum MFC
    Réponses: 2
    Dernier message: 09/06/2004, 10h11
  5. Icône a coté du texte dans une ListBox
    Par joce3000 dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/12/2003, 02h25

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