C# ListView隐藏行
我的要求是在C# ListView隐藏行,c#,.net,winforms,listview,C#,.net,Winforms,Listview,我的要求是在列表视图中隐藏特定行。由于没有内置功能,我使用了ListView\u DrawItem事件来隐藏特定的行。我可以隐藏行,但问题是,如果我在隐藏行中添加一行帖子,将出现一个无效空间 请查找以下代码: ListViewItem LVI = listView1.Items.Add("1"); LVI.SubItems.Add("Srikanth"); ListViewItem LVI1 = listView1.Items.Add("2"); LVI1.SubItems.Add("Sures
列表视图中隐藏特定行。由于没有内置功能,我使用了ListView\u DrawItem
事件来隐藏特定的行。我可以隐藏行,但问题是,如果我在隐藏行中添加一行帖子,将出现一个无效空间
请查找以下代码:
ListViewItem LVI = listView1.Items.Add("1");
LVI.SubItems.Add("Srikanth");
ListViewItem LVI1 = listView1.Items.Add("2");
LVI1.SubItems.Add("Suresh");
private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
{
if (e.Item.Text != "2")
{
e.DrawDefault = true;
}
}
输出看起来像
1斯里坎
3桑迪
是否要删除空格b/w 1和3记录
感谢您提供的任何帮助您并没有真正隐藏这些项目,这是显而易见的。相反,您可以自己绘制它们,并将其中一些传递给默认渲染。不管怎样,物品都在那里
我的方法是操纵集合,只添加列表框需要处理的项目
根据手头的数据,按顺序保存完整列表的本地副本,例如在通用列表中。另外,保留一个“隐藏”索引列表
尊重列表的顺序
并在其上循环,仅为“隐藏”列表中不存在的索引添加新的ListViewItem
对象
private List<String[]> _listItems = new List<String[]>();
private List<Int32> _hiddenIndexes = new List<Int32>();
private void UpdateCollection()
{
listBox.Items.Clear();
for (Int32 i = 0; i < _listItems.Count; i++)
{
if (!_hiddenIndexes.Contains(i))
listBox.Items.Add(new ListBoxItem(_listItems[i]));
}
}
private List\u listItems=new List();
私有列表_hiddenIndexes=新列表();
私有void UpdateCollection()
{
listBox.Items.Clear();
对于(Int32 i=0;i<\u listItems.Count;i++)
{
如果(!\u hiddenIndexes.Contains(i))
添加(新的ListBoxItem(_listItems[i]);
}
}
请注意,如果这是一个包含大量项目的列表,那么它可能不是最有效的方法