如何隐藏ListView控件中的列?

如何在不将列Width属性设置为0情况下隐藏ListView控件中的列?

另外,我可以锁定列的Width吗?

不太清楚C++Cli标签的C++Cli ,但是:

我假设如果您正在讨论ListView的列,那么您将在ListView详细信息视图中。 ListView没有内置的Hide / Show列方式,正如我所知,因此解决方案之一就是删除该列表单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控件和一个按钮控件。 将3列添加到listview控件。 将listview控件的“view”属性设置为“Details”。 将listview控件的“VirtualMode”属性设置为“True”。 将listview控件的“VirtualListSize”属性设置为“100”。 在表单中添加bool:

 private bool mblnShow = true; 

为listview控件添加事件“RetrieveVirtualItem”,并添加以下代码:

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

运行该应用程序,然后按按钮显示并隐藏第二列。

请注意,如果将数据放入items集合中,则在虚拟模式下运行listview将引发错误。 关于虚拟模式的知识还有很多,所以我建议在使用它之前阅读它。

如果需要将数据与行相关联而不显示它,请使用ListView的Tag属性

转到编辑列(在设计模式下列表视图的属性下),在Misc set Width to ZERO下

如果您只有一列,则会显示第二个空列以填充右侧的额外空格。 要隐藏此空列,请实现listview resize事件。 在那里做以下。

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

这将有效地隐藏额外的空列,而是让第一列占用列表视图中的所有空间。

我正在寻找一种方法来做同样的事情,把我带到这里。

我不确定是否有更好的方法,但我使用以下解决方法。

如果需要向Listview项添加值但不想显示它,则可以使用大于总列数的子项索引。 这样,即使值存在,也不可见