2010-03-27 9 views

Répondre

1

ObjectListView - un wrapper autour d'un WinForm ListView - possède des propriétés pour vous permettre de contrôler la couleur d'arrière-plan et de premier plan des lignes sélectionnées. Il utilise la technique suggérée par Obalix, mais il a déjà fait le dur travail pour vous.

Ainsi, avec un peu d'effort, vous pouvez produire quelque chose comme ceci:

alt text

Le "Feel Good Inc" ligne montrent un premier plan personnalisé et arrière-plan pour la sélection.

+2

'ObjectListView' n'est pas un remplacement direct de' ListView'. Certains refactoring de code existant peuvent être nécessaires pour l'utiliser. –

+0

J'ai analysé ce projet. Mais je pense que c'est trop dur à apprendre. –

+0

Cette réponse est exactement ce dont vous avez besoin: http://stackoverflow.com/a/5188225/1317040 – cnlevy

2

Bien pour WinForms, vous devez définir la propriété OwnerDraw sur true, puis utiliser les événements DrawItem et DrawSubItem pour dessiner l'élément manuellement.

See here pour un exemple.

7

Si vous vouliez que votre ListView d'avoir le style de l'Explorateur Windows ListView (y compris la belle apparence avec des bords arrondis dans Win7/Vista), vous pouvez utiliser un peu P/Invoke pour y parvenir:

[DllImport("uxtheme.dll", CharSet = CharSet.Unicode, ExactSpelling = true)] 
internal static extern int SetWindowTheme(IntPtr hWnd, string appName, string partList); 

// You can subclass ListView and override this method 
protected override void OnHandleCreated(EventArgs e) 
{ 
    base.OnHandleCreated(e); 
    SetWindowTheme(this.Handle, "explorer", null); 
} 
+0

Fonctionne aussi sur TreeView! +1 –

Questions connexes