【问题标题】:ListView Items not showing in ListView and columns disappearListView 项目未显示在 ListView 和列中消失
【发布时间】:2014-02-03 17:02:05
【问题描述】:

我在 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 有一个滚动条,我猜这表明它没有隐藏。

欢迎提出任何建议!

更新

列表视图 Items.Count 告诉我列表视图中有项目。更奇怪的是,如果我将视图更改为 SmallIcons 我会看到它们,在 Details 视图中它们会消失!如果我破译代码并查看项目,它们在所有正确的地方都有正确的数据!

【问题讨论】:

  • 有什么方法可以用调试器运行它并检查列表视图是否实际包含您要添加的项目?就像将 lvFiles.items.count 放在手表或其他东西上,并确保它们增加只是为了确定。
  • 另外我刚刚注意到,在第二部分中,在您“添加”项目后,您会丢失列标题?这是真的还是只是因为滚动或其他原因?
  • 发布的代码有效。是否涉及其他面板? ListViewGroups 等?
  • @metinoheat 好点,我刚到家,但会回来检查。但是是的,因为图片显示列标题消失但是当加载足够的项目以保证一个时,列表视图确实有一个滚动条。
  • @LarsTech 是的,列表视图位于 TabControl 中

标签: c# winforms listview


【解决方案1】:

这个问题的答案很尴尬!你可能会说是男生的错误。

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

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

【讨论】:

  • 这对我很有用。我只是做了同样的事情,所以你并不孤单!
  • 这是 Stack Overflow 实用性的完美示例。
  • 不是我的问题,而是类似的错误,可能对其他人有用。事实证明,在更改对象后,我忘记更改绑定到列的数据的路径(在 xml 中)。暂时删除列有助于找到这一点。
【解决方案2】:

这样的事情怎么样

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

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多