Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] Сменить цвет выделенного элемента ListView.

Ответить
Настройки темы
.NET - [решено] Сменить цвет выделенного элемента ListView.

В Поисках Истины


Сообщения: 802
Благодарности: 135


Конфигурация

Профиль | Отправить PM | Цитировать


Доброе время суток. Собственно сабж, нужно сменить цвет выделяемого элемента в ListView. Подскажите как это сделать? Где можно посмотреть примеры...

Отправлено: 00:03, 20-07-2011

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Чудно, надо будет взять на заметку для своих проектов

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 18:48, 16-08-2011 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Немного поспешил закрыть тему

При методе, описанном выше, получается нечто ужасное. Все размывается, пропадает и так далее. Сразу не заметил( при малом количестве итемов). Словами тяжело объяснить, видео.

Есть ли идеи почему такое происходит?(

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 08:37, 17-08-2011 | #12


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


похоже, проблема из за того,что у тебя нигде не происходит вызов функции invalidate для списка.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 08:54, 17-08-2011 | #13


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата Delirium:
вызов функции invalidate »
Если я правильно понял что нужно, сделал при добавлении итемов так :
Код: Выделить весь код
listView1.BeginUpdate();
listView1.Items.Clear();
//Добавляю итемы
listView1.EndUpdate();
listView1.Invalidate();
Ничего не изменяется...

Решение "половины" проблемы найдено. Нужно при выборе областей прорисовки использовать вместо e.Item.Position, e.Bounds.

Отрисовывается вроде бы хорошо, пока что не заметил каких - либо нюансов. Но осталась еще одна половина проблемы - Есть элементы, фон белый, выделяю кликом один элемент(черный цвет). После этого тупо дергаю мышью по области listview, и проведя несколько раз курсором по выделенному элементу, цвет возвращается в белый, после чего выделить (черным) этот же элемент не получается кликом. Сначала нужно выделить другой.

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 10:28, 17-08-2011 | #14


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Кажется вторая половина проблемы тоже решена.
Просто добавить дополнительную проверку.

Код: Выделить весь код
else //остальные элементы
                        {
                             if (!e.Item.Selected) //проверка не выделен ли элемент
                             {
                                e.Graphics.FillRectangle (Brushes.Цвет, e.Bounds );
                                e.Graphics.DrawString ("Первая строка", new Font ( "Arial", 10 ), Brushes.Цвет, new Point ( e.Item.Position.X + 36, e.Item.Position.Y ) );
                                brush = new SolidBrush ( Color.FromArgb ( Colors.SecondRowSelected ) );
                                e.Graphics.DrawString ( "Вторая строка", new Font ( "Arial", 10 ), Brushes.Цвет, new Point ( e.Item.Position.X + 36, e.Item.Position.Y + 15 ) );
                               }
                        }
На первый взгляд, все отрисовывается именно так, как хотелось бы. Время покажет)

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:00, 17-08-2011 | #15



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] Сменить цвет выделенного элемента ListView.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Открытие выделенного файла в заданном приложении Vadikan Скриптовые языки администрирования Windows 2 04-12-2010 18:23
Разное - как на vba написать печать выделенного диапазона ячеек excel? Ingolder Microsoft Office (Word, Excel, Outlook и т.д.) 1 13-10-2010 00:51
Разное - [решено] Восстановление Vista с выделенного раздела Recovery DimDau Microsoft Windows Vista 20 01-04-2010 11:21
реально ли без выделенного IP получать почту? aks1983 Сетевые технологии 8 15-05-2005 04:20
замена значения элемента массива другим значением элемента.. MXM Вебмастеру 1 20-05-2004 06:50




 
Переход