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