2008-10-27 2 views
4

Я пытаюсь использовать собственный элемент управления заголовками Windows (Theme-aware), чтобы отображать только некоторые заголовки столбцов. Основная цель - избегать ручного рисования заголовков столбцов и полагаться на функционально поддерживаемые функции.Управление заголовком в WinForms - любая такая вещь?

Так 2 варианта я думал, являются:

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

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

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

ответ

4

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

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

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

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