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

Ответить
 • Просмотры: 1
Аватара пользователя
LilLoco

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

Сообщение LilLoco »

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

Re: .NET - [решено] Сменить цвет выделенного элемента ListView.

Сообщение Delirium »

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

Re: .NET - [решено] Сменить цвет выделенного элемента ListView.

Сообщение Delirium »

А вот это случайно не то, что надо?
http://msdn.microsoft.com/ru-ru/libr...=vs.90%29.aspx




Ты хочешь изменить стандартный синенький текст при выделении строки или что конкретно? У меня не получается изменить только синий цвет выделения, все остальное меняется спокойно.



Еще маленько нарыл, но не тестировал:

http://www.debugging.com/bug/5554
Аватара пользователя
LilLoco

Re: .NET - [решено] Сменить цвет выделенного элемента ListView.

Сообщение LilLoco »

Цитата Delirium:



Ты хочешь изменить стандартный синенький текст при выделении строки или что конкретно?
.NET - [решено] Сменить цвет выделенного элемента ListView.




Как раз - таки именно синенький цвет выделения)

Спасибо за ссылки, буду разбираться!
Аватара пользователя
LilLoco

Re: .NET - [решено] Сменить цвет выделенного элемента ListView.

Сообщение LilLoco »

LilLoco, как вариант для обдумывания - проставить свойство OwnerDraw в True и руками прописать отображение. А в свойстве наведения мыши прорисовывать свой прямоугольник по координатам...
Аватара пользователя
Delirium

Re: .NET - [решено] Сменить цвет выделенного элемента ListView.

Сообщение Delirium »

LilLoco, как вариант для обдумывания - проставить свойство OwnerDraw в True и руками прописать отображение. А в свойстве наведения мыши прорисовывать свой прямоугольник по координатам...
Аватара пользователя
Delirium

Re: .NET - [решено] Сменить цвет выделенного элемента ListView.

Сообщение Delirium »

Решение найдено? Если да, поделись наработками Изображение
Аватара пользователя
LilLoco

Re: .NET - [решено] Сменить цвет выделенного элемента ListView.

Сообщение LilLoco »

Delirium, Я пока что в отпуске... Отдыхаю так сказать от всего) Как только закончится, так сразу примусь искать решение...
Аватара пользователя
Delirium

Re: .NET - [решено] Сменить цвет выделенного элемента ListView.

Сообщение Delirium »

Delirium, Внимательно посмотрел все ваши ссылки, огромное спасибо.


Цитата 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 );// отрисовываем иконку слева
                }

Вот таким способом добился.
Ответить

Вернуться в «Программирование и базы данных»