2017-09-28 8 views
1

Je souhaite donc définir une couleur d'arrière-plan spécifique pour une ligne entière.C# ObjectListView BackColor (Windows Forms)

je l'ai déjà atteint cet objectif en mettant en œuvre le code suivant:

foreach(var model in modelList) 
      objectListView1.BackColor = model.RowColor; 
      objectListView1.AddObject(model); 

Cela fonctionne comme prévu. Il parcourra ma liste de modèles et ajoutera la couleur de ligne qui lui est assignée. Donc, mon OLV a 2 lignes entières en surbrillance. Le problème se situe lorsque je passe la souris sur la ligne, il va revenir au blanc. Il semble que l'OLV soit rafraîchissant lorsque j'effectue une action et que la BackColor soit réinitialisée à la valeur par défaut.

Comment puis-je empêcher cela?

+0

Il y aura de désactiver la fonction de vol stationnaire ou donner la même couleur. Chaque fois que vous passez la souris sur une ligne, CSS sera actif et la couleur de la ligne sera modifiée. – nikunjM

Répondre

1

Si vous souhaitez définir de manière permanente la couleur de la ligne en fonction du modèle.RowColor utilisez le FormatRow event.

Ensuite, vous pouvez faire quelque chose comme ceci:

private void olv1_FormatRow(object sender, FormatRowEventArgs e) { 
    e.Item.BackColor = model.RowColor; 
} 
+0

Merci pour votre réponse. Je vais essayer ça aujourd'hui, merci! – bill5967