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
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
Je pense que ça va être difficile avec une listbox, essaie avec une listview, ça devrait être plus facile .
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 !
Excuse moi, mais on ne doit pas avoir le meme niveau pour facile....
J'ai créé ma fonction event :
et apres je ne comprend pas vraiment ce que tu me dis?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 private void listBox1_SelectedIndexChanged(object sender, EventArgs e) {
As tu un exmple ou plus d'explication?
Merci de ton aide
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 !!!
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.
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 !
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.
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 :
Dans le DrawItem, je crée une font de taille 10 * e.Index+1
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); }
(c'est juste un cas d'utilisation)...
Voilà
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?
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
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; }
Ok effectivement, ce n'est pas encore a mon niveau ...
Merci de ton aide je vais me pencher sur ton code pour l'adapter.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager