2010-07-21 3 views
0

J'ai une zone de liste déroulante contenant des éléments personnalisés. Il utilise également la zébrure et, pour cette raison, la couleur du vol stationnaire est parfois désactivée. Comment puis-je contrôler son apparence en vol stationnaire?Couleur de la police sur le vol stationnaire pour les éléments de liste d'une zone de liste déroulante

Voici le code que j'utilise:

Color zeros = Color.FromArgb(200, 200, 200); 
    Color ones = Color.FromArgb(225, 225, 255); 
    private void innerBox_DrawItem(object sender, DrawItemEventArgs e) { 
     Brush brush = new SolidBrush(e.ForeColor); 
     Pen pen = new Pen(e.ForeColor); 


     if (e.Index % 2 == 0) { 
      Brush backgroundBrush = new SolidBrush(zeros); 
      e.Graphics.FillRectangle(backgroundBrush, e.Bounds); 
     } else { 
      Brush backgroundBrush = new SolidBrush(ones); 
      e.Graphics.FillRectangle(backgroundBrush, e.Bounds); 
     } 

     Tenant tenant = ((ComboBox)sender).Items[e.Index] as Tenant; 

     Rectangle rect = e.Bounds; 

     //Draw Tenant Name 
     if (tenant.TenantName != null) { 
      e.Graphics.DrawString(tenant.TenantName, e.Font, brush, rect, StringFormat.GenericDefault); 
     } 
     rect.X += MaxTenantLength; 
     e.Graphics.DrawLine(pen, new Point(rect.X - 3, rect.Y), new Point(rect.X - 3, rect.Y + e.Bounds.Height)); 

     //Draw Property 
     if (tenant.Property != null) { 
      e.Graphics.DrawString(tenant.Property.PropertyName, e.Font, brush, rect, StringFormat.GenericDefault); 
     } 
     rect.X += MaxPropertyLength; 
     e.Graphics.DrawLine(pen, new Point(rect.X - 3, rect.Y), new Point(rect.X - 3, rect.Y + e.Bounds.Height)); 

     //Draw Rental Unit 
     if (tenant.RenatlUnit != null) { 
      e.Graphics.DrawString(tenant.RenatlUnit.UnitNumber, e.Font, brush, rect, StringFormat.GenericDefault); 
     } 
     rect.X += MaxRentalUnitLength; 

     e.DrawFocusRectangle(); 
    } 

Répondre

0

capture l'événement MouseMove et de créer une sorte de variable membre d'agir comme un drapeau si la souris est sur un élément rayé « zèbre ». Appelez la méthode Refresh(), si nécessaire.

Questions connexes