
.NET - [решено] Сменить цвет выделенного элемента ListView.
-
LilLoco
Re: .NET - [решено] Сменить цвет выделенного элемента ListView.
Чудно, надо будет взять на заметку для своих проектов 

-
LilLoco
Re: .NET - [решено] Сменить цвет выделенного элемента ListView.
Немного поспешил закрыть тему
При методе, описанном выше, получается нечто ужасное. Все размывается, пропадает и так далее. Сразу не заметил( при малом количестве итемов). Словами тяжело объяснить,
Есть ли идеи почему такое происходит?(
При методе, описанном выше, получается нечто ужасное. Все размывается, пропадает и так далее. Сразу не заметил( при малом количестве итемов). Словами тяжело объяснить,
видео
. Есть ли идеи почему такое происходит?(
-
Delirium
Re: .NET - [решено] Сменить цвет выделенного элемента ListView.
похоже, проблема из за того,что у тебя нигде не происходит вызов функции invalidate для списка.
-
LilLoco
Re: .NET - [решено] Сменить цвет выделенного элемента ListView.
Цитата Delirium:
вызов функции invalidate
Если я правильно понял что нужно, сделал при добавлении итемов так :
Код:
Ничего не изменяется...
Решение "половины" проблемы найдено. Нужно при выборе областей прорисовки использовать вместо e.Item.Position, e.Bounds.
Отрисовывается вроде бы хорошо, пока что не заметил каких - либо нюансов. Но осталась еще одна половина проблемы - Есть элементы, фон белый, выделяю кликом один элемент(черный цвет). После этого тупо дергаю мышью по области listview, и проведя несколько раз курсором по выделенному элементу, цвет возвращается в белый, после чего выделить (черным) этот же элемент не получается кликом. Сначала нужно выделить другой.
вызов функции invalidate
.NET - [решено] Сменить цвет выделенного элемента ListView.
Если я правильно понял что нужно, сделал при добавлении итемов так :
Код:
Код: Выделить всё
listView1.BeginUpdate();
listView1.Items.Clear();
//Добавляю итемы
listView1.EndUpdate();
listView1.Invalidate();Ничего не изменяется...
Решение "половины" проблемы найдено. Нужно при выборе областей прорисовки использовать вместо e.Item.Position, e.Bounds.
Отрисовывается вроде бы хорошо, пока что не заметил каких - либо нюансов. Но осталась еще одна половина проблемы - Есть элементы, фон белый, выделяю кликом один элемент(черный цвет). После этого тупо дергаю мышью по области listview, и проведя несколько раз курсором по выделенному элементу, цвет возвращается в белый, после чего выделить (черным) этот же элемент не получается кликом. Сначала нужно выделить другой.
-
LilLoco
Re: .NET - [решено] Сменить цвет выделенного элемента ListView.
Кажется вторая половина проблемы тоже решена.
Просто добавить дополнительную проверку.
Код:
На первый взгляд, все отрисовывается именно так, как хотелось бы. Время покажет)
Просто добавить дополнительную проверку.
Код:
Код: Выделить всё
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 ) );
}
}На первый взгляд, все отрисовывается именно так, как хотелось бы. Время покажет)