Изменить цвет фона выбора ListView? - PullRequest
6 голосов
/ 27 марта 2010

Как я могу изменить цвет выделения на ListView? По умолчанию, когда пользователь выбирает элемент, он показывает синий фон. Я хочу изменить это на темно-серый, или что-то ... Спасибо за помощь!

Ответы [ 3 ]

7 голосов
/ 27 марта 2010

Если вы хотите, чтобы ваш ListView имел стиль Windows Explorer ListView (включая приятный внешний вид с закругленными краями в Win7 / Vista), вы можете использовать небольшой P / Invoke, чтобы добиться этого:

[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);
}
2 голосов
/ 27 марта 2010

Хорошо для WinForms вы должны установить для свойства OwnerDraw значение true, а затем использовать события DrawItem и DrawSubItem для рисования элемента вручную.

См. Здесь для примера.

1 голос
/ 28 марта 2010

ObjectListView - обертка вокруг WinForm ListView - имеет свойства, позволяющие контролировать цвет фона и переднего плана выбранных строк. Он использует технику, предложенную Obalix, но он уже сделал тяжелую работу за вас.

Итак, приложив немного усилий, вы можете создать что-то вроде этого:

alt text

Строка "Feel Good Inc" показывает пользовательский передний план и фон для выбора.

...