如何隐藏ListView
控件中的列,而不将列Width
属性设置为0
?
另外,我可以锁定列的Width
吗?
答案 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
项目添加一个值但又不想显示它,则可以使用大于总列数的子项目索引。这样,即使值存在,它也不可见