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

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

кроме того, я могу заблокировать Width колонки?

8 ответов


не очень ясно, что здесь имеет значение C++Cli тег, но:

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

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

listView.SuspendLayout(true);

/*Manipulate column here*/

listView.ResumeLayout();

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

надеюсь, что это помогает.


самый простой способ следующим образом, попробуйте этот фрагмент кода :

скрыть:

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

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

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

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


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

listView1.Columns.RemoveAt(3);

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

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

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


как Скрыть / показать столбцы listview

C#, .NET framework 3.5.

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

позвольте мне продемонстрировать: Создайте форму и добавьте элемент управления listview и элемент управления button. Добавить 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" для элемента управления button и добавьте следующий код:

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);

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

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


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


перейдите к редактированию столбцов (в разделе свойства listview в режиме разработки), в разделе Разное установите ширину в ноль


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

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

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


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

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

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