C #: Предотвратить ListViewItem Изображение, которое будет отображаться выбранным - PullRequest
2 голосов
/ 28 июля 2010

Мне было интересно, возможно ли иметь ListView, в котором элементы можно выбирать как обычно с одним отличием. Когда выбран ListViewItem, я хотел бы видеть выделение в текстовой метке, однако я бы предпочел, чтобы изображение оставалось таким же. Причиной этого является то, что в настоящее время выделение синего цвета поверх изображения выглядит ужасно (эффект еще хуже на прозрачных изображениях!).

Я надеялся, что нет необходимости использовать обработчик DrawItem, но, думаю, надежды невелики.

Большое спасибо,

лучший

Frank

РЕДАКТИРОВАТЬ: Я подумал, что лучше добавить скриншот, показывающий проблему. Я использую ListView в режиме LargeIcon.

** оупс Мне не разрешено добавлять картинки * так вот ссылка на него. Приносим извинения за доставленные неудобства. ***

http://cl.ly/adb9c6d29ffc0e2e1b5e

Как вы можете видеть, выбранный элемент - «Сравнение видов и видов». Тем не менее, я хотел бы, чтобы синий оттенок на иконке исчез.

Еще раз спасибо.

Ответы [ 2 ]

1 голос
/ 29 июля 2010

Для WinView ListView самый простой способ сделать это - наследовать от ListView и переопределить OnDrawSubitem, чтобы изменить только рисунок вашего изображения. Если вы сделаете это, вам нужно будет установить для OwnerDraw значение true и переопределить также OnDrawColumnHeader.

Обратите внимание, что если вы не хотите наследовать, вы можете обрабатывать DrawSubItem и DrawColumnHeader.

0 голосов
/ 07 ноября 2012

Я думаю, что должен быть некоторым способом сделать это напрямую.Одна вещь, которая, вероятно, работает на Vista +, это сказать ListView стилизоваться под Windows Explorer

[DllImport("uxtheme.dll", ExactSpelling = true, CharSet = CharSet.Unicode)]
public static extern int SetWindowTheme(IntPtr hWnd, String pszSubAppName, String pszSubIdList);

SetWindowTheme(this.lvSessions.Handle, "Explorer", null);
...