在ListView控件中隐藏ID列

我将ListView控件绑定到DataTable。 DataTable有一个名为ProductID的列。 有没有办法隐藏这个专栏,因为我以后需要它的价值?

我只是解决UI角度问题。 您可以通过将列宽设置为0来隐藏它。例如,如果ID绑定到第2列:

public partial class Form1 : Form { public Form1() { InitializeComponent(); listView1.Columns[1].Width = 0; listView1.ColumnWidthChanging += listView1_ColumnWidthChanging; } private void listView1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e) { if (e.ColumnIndex == 1) { e.NewWidth = 0; e.Cancel = true; } } } 

这并不是很理想,用户可以通过“分割器”光标进行混淆,当光谱分离器右侧有点太远时,它会显示出来。 这很难解决。

如何隐藏/显示listview列

C#,.NET framework 3.5。

如果在“虚拟模式”下使用listview,则很容易隐藏和显示listview列。 在“虚拟模式”中,您负责使用数据填充listviewitems。 这样就可以将正确的数据放入正确的列中。

让我来certificate一下:

创建表单,并添加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将引发错误。 关于虚拟模式的知识还有很多,所以我建议在使用它之前阅读它。