Контроль заголовка в WinForms - есть такая вещь? - PullRequest
4 голосов
/ 28 октября 2008

Я пытаюсь использовать собственный элемент управления заголовками Windows для отображения только некоторых заголовков столбцов. Основная цель - избегать рисования заголовков столбцов вручную и полагаться на встроенные функции.

Итак, 2 варианта, о которых я думал:

  1. Используйте HeaderControl и добавьте в него столбцы (кажется, я не могу найти элемент управления заголовка, поддерживаемый WinForms).

  2. Используйте элемент управления ListView и скажите, что он не отображает строки (или, в основном, установите его высоту равной высоте заголовка столбца) - не могу найти способ определить, какую высоту я должен назначить элементу управления .

Любые хорошие идеи высоко ценятся!

1 Ответ

4 голосов
/ 28 октября 2008

В среде .NET пока нет HeaderControl для WinForms (ListView использует класс ColumnHeader, но это полезно только с ListView). Если вы нацелены только на Microsoft Windows, вы можете посмотреть на обертывание элемента управления Win32 для использования в .NET, хотя я ожидаю, что это будет существенной работой.

Ваш второй вариант вполне допустим, хотя и выглядит несколько неуклюжим. Я вижу трудности, возникающие при правильном подборе размера списка, так что заголовок и только заголовок видны.

Третий вариант - свернуть свой собственный HeaderButton, представляющий один столбец (например, ColumnHeader), и использовать вызовы рисования темы для его рисования, а затем просто объединить их в FlowLayoutPanel или TableLayoutPanel в строка заголовка. Если вы хотите изменить размер, вы можете сделать так, чтобы HeaderButton имел область захвата, которую вы можете взять, и изменить ее ширину.

Я думаю, что третий вариант будет достаточно прост для создания, даже с возможностью определения размера, поэтому я бы порекомендовал воспользоваться этим маршрутом (я мог бы даже попробовать сам, когда вернусь домой сегодня вечером).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...