如何隐藏ListView控件中的列?

时间:2011-10-18 18:03:25

标签: c# .net winforms listview

如何隐藏ListView控件中的列,而不将列Width属性设置为0

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

9 个答案:

答案 0 :(得分:10)

最简单的方法如下,试试这段代码:

隐藏:

      LVW.Columns.Item(0).Width = 0
再次显示:

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

这可能对某人有所帮助。

答案 1 :(得分:4)

不清楚此处C++Cli标记的重要性,但是:

我认为如果你在谈论ListView中的一列,你就会看到控件的详细信息。 ListView中没有内置的隐藏/显示列方式,正如我所知,因此解决方案之一就是删除该列表单UI。

要以最顺畅的方式做到这一点,只需在

之间调用ListView列重新生成代码即可
listView.SuspendLayout(true);

/*Manipulate column here*/

listView.ResumeLayout();

ListView上显示的数据始终“在您手中”,因此,当您决定再次显示该列时,只需显示该列并再次填充ListView

希望这有帮助。

答案 2 :(得分:4)

只需删除您希望的索引处的列:

listView1.Columns.RemoveAt(3);

当你想要它时,只需插入它的名称:

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

它将以其值返回。

答案 3 :(得分:2)

如何隐藏/显示列表视图列

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会抛出错误。关于虚拟模式的知识还有很多,所以我建议在使用之前阅读它。

答案 4 :(得分:2)

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

答案 5 :(得分:1)

您应该使用DataTemplateSelector隐藏和动态显示列表视图中的列或行。官方文档中有一篇有趣的文章。 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/templates/data-templates/selector

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

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

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

答案 8 :(得分:0)

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

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

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