Wie kann ich die Auswahlfarbe auf einem ListView ändern? Wenn der Benutzer ein Element auswählt, wird standardmäßig ein blauer Hintergrund angezeigt. Ich möchte dies in dunkelgrau oder etwas ändern ... Danke für die Hilfe!Ändern Sie die Hintergrundauswahlfarbe von ListView?
Antwort
ObjectListView - ein Wrapper um eine WinForm-ListView - verfügt über Eigenschaften, mit denen Sie die Hintergrund- und Vordergrundfarbe der ausgewählten Zeilen steuern können. Es verwendet die Technik, die Obalix vorgeschlagen hat, aber es hat bereits die harte Arbeit für Sie getan.
Also, mit einer wenig Mühe, Sie so etwas wie diese produzieren können:
Das "Feel Good Inc" Zeile zeigt einen benutzerdefinierten Vordergrund- und Hintergrund für die Auswahl.
'ObjectListView' ist kein Drop-In-Ersatz für' ListView'. Ein Refactoring des vorhandenen Codes kann erforderlich sein, um es zu verwenden. –
Ich analysierte dieses Projekt. Aber ich denke, es ist zu schwer zu lernen. –
Diese Antwort ist genau das, was Sie brauchen: http://stackoverflow.com/a/5188225/1317040 – cnlevy
Gut für WinForms müssen Sie die OwnerDraw
Eigenschaft auf True setzen und dann die DrawItem
und DrawSubItem
Ereignisse verwenden, um das Element manuell zu zeichnen.
See here für ein Beispiel.
Wenn Sie Ihren ListView
haben den Stil des Windows Explorer ListView
(einschließlich der schönen Optik mit abgerundeten Kanten in Win7/Vista) wollte man ein wenig P verwenden könnte/Invoke das erreichen:
[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);
}
Funktioniert auch auf TreeView! +1 –
ist dies in WPF oder WinForms? – Joel