Как скрыть столбец в элементе управления ListView?

Как я могу скрыть столбец в элементе управления ListView без установки свойства столбца Width в 0?

Также можно заблокировать Width столбца?

Ответ 1

Не совсем понятно, что имеет значение здесь C++Cli tag, но:

Я полагаю, что если вы говорите о столбцах в ListView, вы подробно смотрите на элемент управления. В ListView нет встроенного метода Hide/Show в столбце ListView, так как я знаю, поэтому одним из решений может быть просто удаление этого интерфейса формы столбца.

Чтобы сделать это наиболее простым способом, просто вызовите код регенерации столбца ListView между

listView.SuspendLayout(true);

/*Manipulate column here*/

listView.ResumeLayout();

Данные, которые видны в ListView всегда остаются "в ваших руках", поэтому на данный момент вы решите снова показать столбец, просто покажите столбец и снова заполните ListView.

Надеюсь это поможет.

Ответ 2

Простейший способ, как следует, попробовать этот сегмент кода:

скрывать:

      LVW.Columns.Item(0).Width = 0

показать еще раз:

      LVW.Columns.Item(0).AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent)

может это кому-то помочь.

Ответ 3

Просто просто удалите столбец по индексу, который вы хотите:

listView1.Columns.RemoveAt(3);

когда вы хотите его вернуть, просто вставьте его с его именем:

listView1.Columns.Insert(3, "Column Name");

Он вернется со своими значениями.

Ответ 4

Если вам нужно связать данные со строкой, не отображая ее, используйте свойство ListView Tag

Ответ 5

Как скрыть/показать столбцы списка

С#,.NET framework 3.5.

Легко скрыть и показать столбцы списка, если вы используете listview в "виртуальном режиме". В "виртуальном режиме" вы несете ответственность за заполнение listviewitems данными. Это позволяет помещать правильные данные в правильный столбец.

Позвольте мне продемонстрировать: создайте форму и добавьте элемент управления listview и элемент управления кнопкой. Добавьте 3 столбца в элемент управления listview. Установите для свойства "view" элемента управления listview значение "Details". Установите для свойства "VirtualMode" элемента управления listview значение "True". Установите для свойства "VirtualListSize" элемента управления listview значение "100". Добавьте bool в форму:

private bool mblnShow = true;

Добавьте событие "RetrieveVirtualItem" для элемента управления listview и добавьте следующий код:

ListViewItem objListViewItem = new ListViewItem();
objListViewItem.Text = "Item index: " + e.ItemIndex.ToString();
if (mblnShow) objListViewItem.SubItems.Add("second column: " +     DateTime.Now.Millisecond.ToString());
objListViewItem.SubItems.Add("third column: " + DateTime.Now.Millisecond.ToString());
e.Item = objListViewItem;

Добавьте событие "Click" для управления кнопкой и добавьте следующий код:

mblnShow = !mblnShow;
if (mblnShow && !this.listView1.Columns.Contains(this.columnHeader2))   this.listView1.Columns.Insert(1, this.columnHeader2);
else if (!mblnShow && this.listView1.Columns.Contains(this.columnHeader2))
    this.listView1.Columns.Remove(this.columnHeader2);

Запустите приложение и нажмите кнопку, чтобы отобразить и скрыть второй столбец.

Обратите внимание, что запуск списка в виртуальном режиме приведет к ошибке, если вы поместите данные в коллекцию элементов. Существует гораздо больше информации о виртуальном режиме, поэтому я предлагаю прочитать об этом, прежде чем использовать его.

Ответ 6

Перейдите в раздел "Редактировать столбцы" (в свойствах списка в режиме разработки), в разделе "Разное" установите ширину в ZERO

Ответ 7

Если у вас есть только один столбец, появляется второй пустой столбец, чтобы заполнить дополнительное пространство справа. Чтобы скрыть этот пустой столбец, выполните событие изменения размера списка. Там делайте следующее.

m_lstItems.Columns[0].Width = m_lstItems.Width - 5;

Это будет эффективно скрывать лишний пустой столбец, а вместо этого первый столбец займет все пространство в списке.

Ответ 8

Я искал способ сделать то же самое, что привело меня сюда.

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

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