![]() |
Сменить цвет выделенного элемента ListView.
Доброе время суток. Собственно сабж, нужно сменить цвет выделяемого элемента в ListView. Подскажите как это сделать? Где можно посмотреть примеры...
|
|
Забыл добавить что нужно для WinForms, моя ошибка :( По большинству ссылок либо Wpf, либо Asp.net :( Вроде как нужно использовать событие DrawItem, но все как то не могу с ним разобраться!
|
А вот это случайно не то, что надо? http://msdn.microsoft.com/ru-ru/libr...=vs.90%29.aspx
Ты хочешь изменить стандартный синенький текст при выделении строки или что конкретно? У меня не получается изменить только синий цвет выделения, все остальное меняется спокойно. Еще маленько нарыл, но не тестировал: http://www.debugging.com/bug/5554 |
Цитата:
Спасибо за ссылки, буду разбираться! |
LilLoco, как вариант для обдумывания - проставить свойство OwnerDraw в True и руками прописать отображение. А в свойстве наведения мыши прорисовывать свой прямоугольник по координатам...
|
Решение найдено? Если да, поделись наработками :)
|
Delirium, Я пока что в отпуске... Отдыхаю так сказать от всего) Как только закончится, так сразу примусь искать решение...
|
Похоже, я нашел то, что нужно. http://ru.w3support.net/index.php?db=so&id=1228492
Может помочь вот это: http://ru.w3support.net/index.php?db=so&id=1433292 А также http://stackoverflow.com/questions/1...ection-drawing И напоследок http://stackoverflow.com/questions/2...rrect-location |
Delirium, Внимательно посмотрел все ваши ссылки, огромное спасибо.
Цитата:
![]() Добился так : Устанавливаем необходимые свойства Код:
listView1.View = View.Tile; Код:
for (int i = 0; i < 5; i++) Код:
void listView1_DrawItem ( object sender, DrawListViewItemEventArgs e ) |
Чудно, надо будет взять на заметку для своих проектов :)
|
Немного поспешил закрыть тему :(
При методе, описанном выше, получается нечто ужасное. Все размывается, пропадает и так далее. Сразу не заметил( при малом количестве итемов). Словами тяжело объяснить, видео. Есть ли идеи почему такое происходит?( |
похоже, проблема из за того,что у тебя нигде не происходит вызов функции invalidate для списка.
|
Цитата:
Код:
listView1.BeginUpdate(); Решение "половины" проблемы найдено. Нужно при выборе областей прорисовки использовать вместо e.Item.Position, e.Bounds. Отрисовывается вроде бы хорошо, пока что не заметил каких - либо нюансов. Но осталась еще одна половина проблемы - Есть элементы, фон белый, выделяю кликом один элемент(черный цвет). После этого тупо дергаю мышью по области listview, и проведя несколько раз курсором по выделенному элементу, цвет возвращается в белый, после чего выделить (черным) этот же элемент не получается кликом. Сначала нужно выделить другой. |
Кажется вторая половина проблемы тоже решена.
Просто добавить дополнительную проверку. Код:
else //остальные элементы |
Время: 12:06. |
Время: 12:06.
© OSzone.net 2001-