2015-03-22 2 views
0

В проводнике Windows вы можете скрывать/показывать столбцы. Эта функция также поддерживается Windows ListView? (Я предполагаю, что Windows Explorer использует другой элемент управления, к которому у нас нет доступа).Как скрыть/показать столбцы в элементе управления ListView?

+0

[О управления Header] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb775238.aspx): * "контролирует список ракурса уже Header управления Вместо. создавая элемент управления заголовком для элемента управления списком, вы используете [LVM_GETHEADER] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb774937.aspx) или [ListView_GetHeader] (https: // msdn.microsoft.com/en-us/library/windows/desktop/bb761290.aspx) для извлечения существующего элемента управления. * * – IInspectable

+0

Вам не нужно заходить так далеко. ListView создает собственные сообщения для управления столбцами. 'LVM_DELETECOLUMN',' LVM_INSERTCOLUMN' и 'LVM_SETCOLUMN'. –

ответ

0

Вы можете использовать ListView_GetColumn() и ListView_SetColumn(), чтобы получить/установить атрибуты столбца по мере необходимости. Чтобы скрыть столбец, получите его текущую ширину, а затем установите ее ширину равным 0. Чтобы показать столбец, восстановите его прежнюю ширину.

Однако, когда столбец «скрыт», пользователь все еще может захватить разделитель на краю столбца и вручную изменить размер столбца. Чтобы избежать этого, вы можете:

  1. полностью удалить столбец, используя ListView_DeleteColumn(), а затем использовать ListView_InsertColumn(), когда вы хотите, чтобы повторно показать.

  2. Подкласс ListView для перехвата HDN_BEGINTRACK уведомлений из элемента управления заголовком ListView, возвращающего TRUE для «скрытых» столбцов, чтобы предотвратить их изменение размера.

Смежные вопросы