2013-07-04 3 views
0

Comment modifier la couleur d'arrière-plan d'un contrôle ListView en C# lorsque le contrôle est désactivé? La couleur d'une zone de texte peut être changée quand elle est désactivée mais quand une vue de liste est désactivée elle devient grise et nous ne pouvons pas lui appliquer de couleur. Donc, est-il possible de changer la couleur d'arrière-plan du contrôle ListView? ??Modification de la couleur d'arrière-plan de la liste de contrôle C# en cas de désactivation

Répondre

1

J'ai essayé de surcharger OnPaint, OnPaintBackground mais le BackColor n'a toujours pas changé. Même WM_PAINT peut le modifier, mais l'arrière-plan de l'élément n'est pas identique à la vue de liste BackColor. J'avais pensé à cette solution avant bien qu'il soit juste une sorte de bidouille, mais il semble être la seule solution de travail, l'idée est d'utiliser un Background Image à la place:

Bitmap bm = new Bitmap(listView1.ClientSize.Width, listView1.ClientSize.Height); 
    Graphics.FromImage(bm).Clear(listView1.BackColor); 
    listView1.BackgroundImage = bm; 

Si vous voulez créer votre propre ListView qui prend en charge BackColor invalidée, voici la classe:

public class MyListView : ListView { 
    public override Color BackColor { 
     get { return base.BackColor;} 
     set { 
     base.BackColor = value; 
     if(BackgroundImage == null){ 
      Bitmap bm = new Bitmap(1,1); 
      bm.SetPixel(0,0,value); 
      BackgroundImage = bm; 
      BackgroundImageTiled = true; 
     } 
     } 
    } 
    public override Image BackgroundImage { 
     get { return base.BackgroundImage; } 
     set { 
      base.BackgroundImage = value; 
      if(value == null){ 
      Bitmap bm = new Bitmap(1,1); 
      bm.SetPixel(0,0,BackColor); 
      BackgroundImage = bm; 
      BackgroundImageTiled = true; 
      } 
     } 
    } 
} 

Si quelqu'un a une autre solution, je voudrais savoir aussi.

+1

J'ai pris une approche différente.J'ai juste désactivé les événements sur la liste (glisser, cliquer sur l'événement) sur l'ensemble d'une propriété boolique indiquant de le désactiver.Alors le listview ne devient pas gris et aussi la fonctionnalité comme glisser déposer , cliquez sur sont tous désactivés. – Sujay

Questions connexes