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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
| using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
namespace lB_Perso
{
public class ListBox_Personnalise : System.Windows.Forms.ListBox
{
private SolidBrush sbText=null;
private SolidBrush sbTextSelected=null;
private Hashtable Color_Texte=null;
public ListBox_Personnalise()
{
Color_Texte=new Hashtable();
this.DrawMode=DrawMode.OwnerDrawVariable;
sbText=new SolidBrush(this.ForeColor);
sbTextSelected=new SolidBrush(Color.FromKnownColor(KnownColor.HighlightText));
}
//ajoute un item en spécifiant ce qu'on doit écrire "sender" et
//en quelle couleur l'écrire
public void ItemAdd(object sender,Color c)
{
Color_Texte.Add(this.Items.Count,new SolidBrush(c));
this.Items.Add(sender);
}
// couleur de l'item
public void ItemColor(int indice_item,Color c)
{
if (Color_Texte[indice_item]==null)
{
if (c==Color.Empty)
return;
else
Color_Texte.Add(indice_item,new SolidBrush(c));
}
else
{
if (c==Color.Empty)
Color_Texte.Remove(indice_item);
else
Color_Texte[indice_item]=new SolidBrush(c);
}
this.RefreshItem(indice_item);
}
// on dessine l'item
protected override void OnDrawItem(DrawItemEventArgs e)
{
if (DesignMode && this.Items.Count==0)
base.OnDrawItem(e);
else
{
SolidBrush brushText;
e.DrawBackground(); //Modifie le background si iTem sélectionné
e.DrawFocusRectangle(); //Ajoute rectangle si list à le focus
Rectangle rectBound=e.Bounds;
rectBound.Width-=15;
if (e.Index!=-1)
{
if (GetSelected(e.Index))
{
brushText=sbTextSelected; // lorsque l'item est sélectionné, la couleur du texte change == null cad blanc
}
else
{
if (Color_Texte[e.Index]!=null)
brushText=(SolidBrush)Color_Texte[e.Index]; //couleur
else
brushText=sbText;
}
e.Graphics.DrawString(this.Items[e.Index].ToString(),Font,brushText,e.Bounds);
}
base.OnDrawItem(e);
}
}
// lorsque le curseur de la souris passe
protected override void OnMouseDown(MouseEventArgs e)
{
this.Invalidate();
base.OnMouseDown (e);
}
/// <summary>
/// Nettoye et libère les ressources utilisées.
/// </summary>
protected override void Dispose( bool disposing )
{
base.Dispose( disposing );
}
}
} |