未在ListView中显示的ListView项目和列消失

时间:2014-02-03 17:02:06

标签: c# winforms listview

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

enter image description here

我使用文件的详细信息填充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++;
}

表单加载后,列标题已消失且没有显示任何项目。

enter image description here

我没有代码可以更改ListView或任何容器的可见性。正如您在加载后可以看到的那样,ListView有一个滚动条,我猜测它不会被隐藏。

欢迎任何建议!

更新

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

2 个答案:

答案 0 :(得分:14)

这个问题的答案非常令人尴尬!你可能会说一个男生错误。

例程中的一行代码清除了我错过了重要元素的表单。

lvFiles.Clear();显然清除了包括标题在内的所有内容,我将其更改为lvFiles.Items.Clear();这是我首先要查找的内容之一,并且无法相信我错过了它。 :(

答案 1 :(得分:1)

这样的事情

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++;
}

希望有所帮助