【问题标题】:Listview items not showing列表视图项目未显示
【发布时间】:2011-05-25 16:57:12
【问题描述】:

在使用listview1.View = View.Details 时,我的列表视图会在我添加项目但使其不可见时扩展(生成滚动条),但是当我将其切换到listview1.View = View.List 时,它工作正常吗?

我认为这并不重要,但这是我用来向列表视图添加项目的代码:

     ListViewItem item1 = new ListViewItem(file[1]);
     listView1.Items.Add(item1);

以及自动生成的设计器代码:

        // 
        // listView1
        // 
        this.listView1.CheckBoxes = true;
        this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
        this.Path});
        this.listView1.Location = new System.Drawing.Point(12, 44);
        this.listView1.Name = "listView1";
        this.listView1.Size = new System.Drawing.Size(457, 354);
        this.listView1.TabIndex = 7;
        this.listView1.UseCompatibleStateImageBehavior = false;
        this.listView1.View = System.Windows.Forms.View.Details;

file 是一个字符串数组,在第一个元素中包含大约 50 个奇数字符(使用调试器检查)。

【问题讨论】:

    标签: c# listview


    【解决方案1】:

    你是在叫“清除”吗?如果是这样,请确保您拨打的是lv.Items.Clear() 而不是lv.Clear()

    【讨论】:

    • 谢谢,这解决了我的问题。 MSDN 关于 ListView.Clear():“从控件中删除所有项目和列。”
    • 天啊,同样的问题。称为 lv.Clear(我想要 lv.Items.Clear())。花了很长时间;))
    • 尽管这并没有解决 OP 的问题,但它确实解决了我的问题!
    • 太好了,我在重构一个类后遇到了同样的问题,如果不是你,我不会意识到这是我的错误
    • 太好了,我花了好几个小时来寻找解决方案,现在我发现了错误所在。谢谢
    【解决方案2】:

    以下代码应该可以工作:

    ColumnHeader columnHeader1=new ColumnHeader();
    columnHeader1.Text="Column1";
    this.listView1.Columns.AddRange(new ColumnHeader[] { columnHeader1 });
    ListViewItem item = new ListViewItem("1");
    this.listView1.Items.Add(item);
    this.listView1.View = View.Details;
    

    如果不是,我不知道。您添加的字符串的字符是否可见?

    【讨论】:

    • 它有效,但我不知道为什么您添加的列有效,而我之前添加的列无效。
    • 在没有看到您的代码的情况下无法帮助您,但必须有所不同。你在同一个线程上做所有事情吗?
    • 在上面编辑以包含设计器代码。它似乎像您一样添加了该列...
    • 奇怪...特别是当视图设置为列表时列表视图正确显示项目。不太确定发生了什么,但在代码中的某个地方,您正在摆弄一些超出在详细视图中显示项目所必需的东西。
    • 我没有做任何其他事情。我搜索了所有对 treeview 的引用来检查。
    【解决方案3】:

    您需要添加一列才能使详细信息视图起作用。

    【讨论】:

    • 我手动完成了。其名为道。我是否必须以某种方式将项目添加到列中?
    • 您可能需要将 SubItems 添加到 ListViewItem,但我不这么认为。 Columns.Count 是什么?
    • 我不确定出了什么问题。尝试添加子项。看到列标题了吗? Width 是什么?
    • @Slaks:宽度为 100,添加子项没有帮助。
    • 不知道是什么问题。
    【解决方案4】:

    我遇到了同样的问题,我的listview 中的文本不可见。当我使用代码克隆项目时,错误是我犯的;我不小心只重命名了第一部分并将文本信息再次添加到第一个项目而不是克隆项目。这就是我的意思:

    错误:

    ListViewItem item_klon2 = new ListViewItem();
    item_klon.Text = System.IO.Path.GetFileName(file_with_path);
    item_klon.SubItems.Add(short_date);
    item_klon.SubItems.Add(filesize.ToString() + " kb");
    

    对:

    ListViewItem item_klon2 = new ListViewItem();
    item_klon2.Text = System.IO.Path.GetFileName(file_with_path);
    item_klon2.SubItems.Add(short_date);
    item_klon2.SubItems.Add(filesize.ToString() + " kb");
    

    【讨论】:

    • 代码对错没有区别。也许是编辑错误?请检查一下。
    • 不同之处在于“错误”的情况,他不是将项目添加到新的列表视图,而是添加到旧的列表视图。参见 item_klon. VS。 item_klon2.
    • 所以,'Wrong' 是这样完美命名的,因为不会编译。如果你用一个名字声明一个变量,你必须使用那个变量,对吧?即如果 item_klon2 被声明为一个新的 ListViewItem,我不能使用 item_klon 的属性,因为我没有 item_klon,我有 item_klon2...你明白了
    【解决方案5】:

    我遇到了同样的问题。

    我已将列宽设置为 -2,因此它会自动调整为列标题中文本的长度。当我切换到Details 视图时,列宽自动重置为 0,从而隐藏了项目。

    【讨论】:

      【解决方案6】:

      只需将其添加到您的列表视图。更改 listview1 您的 Listview 名称:

      listView1.Columns.Add("Item Column", -2, HorizontalAlignment.Left);
      

      【讨论】:

        猜你喜欢
        • 2021-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-15
        • 2015-12-24
        • 2023-03-14
        • 1970-01-01
        相关资源
        最近更新 更多