Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
191 / 50 / 10
Регистрация: 27.09.2013
Сообщений: 516
Записей в блоге: 4

Перерисовка Header'a ListView: остается незакрашенный участок

05.05.2014, 01:17. Показов 1841. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, появилась потребность в кастомно отрисованном ListView, если включить OwnerDraw, то появляется маленькая неприятность(видна на скрине), остается кусочек header'a, подскажите, как его можно закрасить? В Delphi я перерисовывал header при помощи WinApi, но в шарпе не хотелось бы прибегать к WinApi, можно ли его перерисовать стандартными методами?
Миниатюры
Перерисовка Header'a ListView: остается незакрашенный участок  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.05.2014, 01:17
Ответы с готовыми решениями:

Вывод выделенной строки в видимый участок ListView
Здравствуйте, уважаемые форумчане! Создаю разные ListView, без вопросов заполняю их информацией, могу удалить строку, могу её вернуть. ...

Перерисовка заголовков колонок ListView
Собственно как можно реализовать перерисовку заголовков колонок ListView(конечно же не поменять Caption, а, например, перекрасить и тд)? ...

Перерисовка одной строчки в ListView
Здравствуйте, такой вот вопрос к знатокам. Есть список содержимого каталога с использованием ListView, происходит изменение имени...

7
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
05.05.2014, 04:48
скорее всего ты не на все события реагируешь или неправильно вычисляешь площадь закрашивания, хотя там три события могут выстрелитьrawItem, DrawSubItem и DrawColumnHeader
0
191 / 50 / 10
Регистрация: 27.09.2013
Сообщений: 516
Записей в блоге: 4
05.05.2014, 05:28  [ТС]
ViterAlex, Дело в том, что я ничего не обрабатывал, просто поставил OwnerDraw = true, получается, что тот кусок хедера не обрабатывается ничем.
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
05.05.2014, 08:55
Ну так что же ты хочешь получить? Начни обрабатывать и потом задавай вопросы
0
191 / 50 / 10
Регистрация: 27.09.2013
Сообщений: 516
Записей в блоге: 4
05.05.2014, 13:52  [ТС]
ViterAlex, пробовал обрабатывать DrawItem/DrawSubItem и DrawColumnHeader, результат на скрине, код прикреплен.

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
        {
            e.DrawText(TextFormatFlags.EndEllipsis | TextFormatFlags.Left | TextFormatFlags.Bottom);
            e.Graphics.DrawRectangle(new Pen(Color.Pink), e.Bounds.Left, e.Bounds.Top, e.Bounds.Width - 1, e.Bounds.Height - 1);
        }
 
        private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
        {
            e.Graphics.DrawRectangle(new Pen(Color.Red), e.Bounds.Left, e.Bounds.Top, e.Bounds.Width - 1, e.Bounds.Height - 1);
            e.Graphics.DrawString(e.Header.Text, this.Font, new SolidBrush(Color.Black), e.Bounds);
        }
Миниатюры
Перерисовка Header'a ListView: остается незакрашенный участок  
0
191 / 50 / 10
Регистрация: 27.09.2013
Сообщений: 516
Записей в блоге: 4
06.05.2014, 11:52  [ТС]
Вопрос все еще актаулен
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
06.05.2014, 14:28
У последнего столбца поставь ColumnWidth = -2, чтобы растянуть его до конца
1
191 / 50 / 10
Регистрация: 27.09.2013
Сообщений: 516
Записей в блоге: 4
06.05.2014, 21:23  [ТС]
ViterAlex, Тогда появляется горизонтальный скроллбар, а мне желательно, чтобы его не было.

Добавлено через 19 минут
Разобрался переопределением ширины последней колонки после добавления итемов.

C#
1
listView1.Columns[listView1.Columns.Count - 1].Width = listView1.Columns[listView1.Columns.Count - 1].Width - (SystemInformation.VerticalScrollBarWidth + 4);
Добавлено через 5 часов 34 минуты
А вообще странный Header у ListView в шарпе, использовал те же методы, что и в Delphi. Обрабатывал WM_NOTIFY(в в шарпе пришлось обрабатывать OCM_NOTIFY) + NM_CUSTOMDRAW, но даже так, у меня не получилось закрасить стандартный header.

Добавлено через 30 минут
Наконец я победил этот Header и смог нормально его перекрасить, если кому интересно, то пишите, выложу код
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.05.2014, 21:23
Помогаю со студенческими работами здесь

вертолёт Bosch WAB2428SCE/05 выгорел участок модуля, выгорел участок модуля (управление УБЛ)
Всем привет! На днях попала в ремонт СМА с классическим диагнозом "не включается". Проверил периферия, все в норме, снял модуль,...

Участок B кода выполняется позже, чем участок A кода, но почему-то B влияет на работоспособность A! Почему?
Друзья! То есть суть такая, создаю объект и в конструктор передаю имя процесса и хэндл снимка системы. А в конструкторе начинается...

ListView. После добавления кнопки перестал быть доступен сам ListView
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам список стал недоступен для клика, а...

Как правильно скролить ListView который находится внутри другого ListView?
Доброго! Впихнул один ListView во внутрль другого, получил интересный эффект... если жмакнуть по элементу верхнего ListView, то скролл...

Listview вывод данных и переход по нажатию на другой Listview SQLite
Доброго извините за название темы, долго не мог сформировать название, В общем у меня беда с пытаюсь написать программу где первый экран...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru