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

-
Delirium
Re: .NET - [решено] Сменить цвет выделенного элемента ListView.
А вот это случайно не то, что надо?
Ты хочешь изменить стандартный синенький текст при выделении строки или что конкретно? У меня не получается изменить только синий цвет выделения, все остальное меняется спокойно.
Еще маленько нарыл, но не тестировал:
http://msdn.microsoft.com/ru-ru/libr...=vs.90%29.aspx
Ты хочешь изменить стандартный синенький текст при выделении строки или что конкретно? У меня не получается изменить только синий цвет выделения, все остальное меняется спокойно.
Еще маленько нарыл, но не тестировал:
http://www.debugging.com/bug/5554
-
LilLoco
Re: .NET - [решено] Сменить цвет выделенного элемента ListView.
Цитата Delirium:
Ты хочешь изменить стандартный синенький текст при выделении строки или что конкретно?
Как раз - таки именно синенький цвет выделения)
Спасибо за ссылки, буду разбираться!
Ты хочешь изменить стандартный синенький текст при выделении строки или что конкретно?
.NET - [решено] Сменить цвет выделенного элемента ListView.
Как раз - таки именно синенький цвет выделения)
Спасибо за ссылки, буду разбираться!
-
LilLoco
Re: .NET - [решено] Сменить цвет выделенного элемента ListView.
LilLoco, как вариант для обдумывания - проставить свойство OwnerDraw в True и руками прописать отображение. А в свойстве наведения мыши прорисовывать свой прямоугольник по координатам...
-
Delirium
Re: .NET - [решено] Сменить цвет выделенного элемента ListView.
LilLoco, как вариант для обдумывания - проставить свойство OwnerDraw в True и руками прописать отображение. А в свойстве наведения мыши прорисовывать свой прямоугольник по координатам...
-
Delirium
Re: .NET - [решено] Сменить цвет выделенного элемента ListView.
Решение найдено? Если да, поделись наработками 

-
LilLoco
Re: .NET - [решено] Сменить цвет выделенного элемента ListView.
Delirium, Я пока что в отпуске... Отдыхаю так сказать от всего) Как только закончится, так сразу примусь искать решение...
-
Delirium
Re: .NET - [решено] Сменить цвет выделенного элемента ListView.
Delirium, Внимательно посмотрел все ваши ссылки, огромное спасибо.
Цитата Delirium:
проставить свойство OwnerDraw в True и руками прописать отображени
Именно так и сделал. Вот этого нужно было добиться :
Добился так :
Устанавливаем необходимые свойства
Код:
Добавляем итемы в ListView
Код:
Сама перерисовка итемов
Код:
Вот таким способом добился.
Цитата Delirium:
проставить свойство OwnerDraw в True и руками прописать отображени
.NET - [решено] Сменить цвет выделенного элемента ListView.
Именно так и сделал. Вот этого нужно было добиться :
Добился так :
Устанавливаем необходимые свойства
Код:
Код: Выделить всё
listView1.View = View.Tile;
listView1.OwnerDraw = true;
listView1.DrawItem += new DrawListViewItemEventHandler ( listView1_DrawItem );Добавляем итемы в ListView
Код:
Код: Выделить всё
for (int i = 0; i < 5; i++)
{
listView1.Items.Add("sdasdsdsf");
}Сама перерисовка итемов
Код:
Код: Выделить всё
void listView1_DrawItem ( object sender, DrawListViewItemEventArgs e )
{
if ((e.State & ListViewItemStates.Selected) != 0) //выделенный элемент
{
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 ) );
}
else //остальные элементы
{
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 ) );
}
e.Graphics.DrawImage (Image , e.Item.Position.X, e.Item.Position.Y + 2, 32, 32 );// отрисовываем иконку слева
}Вот таким способом добился.