C# ListView中未显示的ListView项和列将消失

C# ListView中未显示的ListView项和列将消失,c#,winforms,listview,C#,Winforms,Listview,我在WinForm的选项卡控件中有一个ListView。当表单第一次加载时,我可以看到预期的所有标题: 我用文件的详细信息填充ListView: string[] fileEntries = Directory.GetFiles(trNode.Tag.ToString(), "*.*", SearchOption.TopDirectoryOnly); int fileNo = 1; foreach (string fileName in fileEntries) { FileInfo

我在WinForm的选项卡控件中有一个ListView。当表单第一次加载时,我可以看到预期的所有标题:

我用文件的详细信息填充ListView:

string[] fileEntries = Directory.GetFiles(trNode.Tag.ToString(), "*.*", SearchOption.TopDirectoryOnly);
int fileNo = 1;
foreach (string fileName in fileEntries)
{
    FileInfo oFileInfo = new FileInfo(fileName);
    ListViewItem lvi = new ListViewItem(new string[] { fileNo.ToString(), oFileInfo.Name, oFileInfo.Extension, oFileInfo.Length.ToString(), oFileInfo.CreationTime.ToString() });
    lvFiles.Items.Add(lvi);
    fileNo++;
}
表单加载后,列标题将消失,并且不显示任何项

我没有代码来更改ListView或任何容器的可见性。正如您在加载后看到的,ListView有一个滚动条,我猜这表明它没有隐藏

欢迎提出任何建议

更新


listview Items.Count告诉我listview中有个项目。更奇怪的是,如果我将视图更改为小图标,我会看到它们,在详细视图中它们会消失!如果我破坏代码并查看项目,它们看起来很好,在所有正确的位置都有正确的数据

像这样的怎么样

string[] fileEntries = Directory.GetFiles(trNode.Tag.ToString(), "*.*",      SearchOption.TopDirectoryOnly);
int fileNo = 1;
int ctr = 0
foreach (string fileName in fileEntries)
{
    FileInfo oFileInfo = new FileInfo(fileName);

    lvFiles.Items.Add(fileNo.ToString());
    lvFiles.Items[ctr].SubItems.Add(oFileInfo.Name);
    lvFiles.Items[ctr].SubItems.Add(oFileInfo.Extension);
    lvFiles.Items[ctr].SubItems.Add(oFileInfo.Length.ToString());
    lvFiles.Items[ctr].SubItems.Add(oFileInfo.CreationTime.ToString());
    fileNo++;
    ctr++;
}

希望能有所帮助

这个问题的答案非常令人尴尬!你可以说是男生的错误

例程中的一行代码,用于清除我错过的一个重要元素


lvFiles.Clear()
显然会清除所有内容,包括标题,我将其更改为
lvFiles.Items.Clear()这是我最先寻找的东西之一,真不敢相信我错过了它(

是否有任何方法可以使用调试器运行此操作,并检查listview是否确实包含要添加的项?例如,将lvFiles.items.count放在手表上或其他东西上,并确保它们正在增加以确保正确。另外,我刚刚注意到,在第二部分中,在“添加”之后项目,你丢失了列标题?这是真的,还是仅仅因为滚动或其他原因?发布的代码有效。是否涉及其他面板?ListViewGroups等?@metinoheat很好,我刚到家,但将返回并检查。但是是的,如图所示,列标题消失,但listview确实有一个滚动条w当有足够的项目被加载到保证一个时。@LarsTech是的listview位于一个TabControls中这对我非常有用。我只是做了同样的事情,所以你不是唯一一个这样做的人!这是一个完美的例子说明堆栈溢出的有用性。这不完全是我的问题,但类似的错误,可能对其他人有用。事实证明我有rgotten在更改对象后更改绑定到列的数据的路径(xml格式)。临时删除列有助于查找此路径。