【问题标题】:winforms listview not showing items in detailsviewwinforms listview未在详细信息视图中显示项目
【发布时间】:2011-11-01 01:45:00
【问题描述】:

我被困住了……

这是我将项目添加到我的列表视图的代码:

ListViewItem item = new ListViewItem(ProjectDomainName);
item.Tag = relatedProject.ProjectId;
lvwSelectedProjects.Items.Add(item);

当我选择'View.List' 作为视图模式时,我会看到所有项目。

当我选择'View.Details'(这是我想要的设置)时,我看到......什么都没有。好吧,没什么,我确实得到了一个垂直滚动条,但没有项目。我也可以滚动,但没有项目....

我还在列表视图中添加了一列(没有更改添加项目代码),但这也没有用

我一定是忽略了什么?

【问题讨论】:

  • 我认为您将不得不提供更多详细信息。您提供的用于将项目添加到列表视图的代码没有任何问题,我不确定它是“View.Details”。什么是“视图”,什么是“详细信息”?不确定您要达到的目标...
  • View.Listview.details 是 lisview 的 View 属性的值:lvwAvailableProjects.View = View.Details;

标签: c# winforms listview


【解决方案1】:
ListViewItem item = new ListViewItem("item1");
item.SubItems.Add("subitem"); //add subitem if applicable
listview1.Items.Add(item);

这个结果可以解决你的问题

【讨论】:

  • 这并没有真正为讨论增加任何价值。
【解决方案2】:

listview.View = View.Details 时出现空白项的另一个可能原因是,如果您不向列表视图添加任何列

例如:

ListView lv = new ListView();
lv.View = View.Details;
lv.Items.Add("Test");

.. 将导致一个空白的 ListView。
添加一列将更正:

...
lv.View = View.Details;
// Add one auto-sized column, to show Text field of each item.
lv.Columns.Add("YourColumnTitle", -2);
...

【讨论】:

    【解决方案3】:

    这也发生在我身上(列表视图未在详细信息视图中显示项目)我只是在将项目添加到列表视图并开始显示项目后将以下内容放入代码中(以前仅在设计中)。

    lv.View = View.Details;
    

    【讨论】:

    • FWIW:我没有投反对票,但没有更多信息,不清楚 你首先做错了什么,因此这“修复”了它。如果列表视图已经在 Details 视图中(在 Designer 中设置),则添加此行应该无效。它是“一个神奇的咒语”——你不知道它为什么有帮助,也不知道什么时候会有帮助。这将有助于首先找出问题所在。例如,可能需要刷新视图,所以“直截了当”的答案应该是“Invalidate();Update();”,这触发了真正需要的内容
    【解决方案4】:

    因为,您应该使用 ListViewDataItem 而不是 ListViewItem,请注意...

            for (int i = 0; i < AudioCdWriter.FileCount; ++i) {
                var item = new ListViewDataItem(i.ToString());
                item.SubItems.Add(AudioCdWriter.TrackLength((short)i).ToString());
                item.SubItems.Add(AudioCdWriter.file[(short)i]);
                lvwAudioFiles.Items.Add(item);
            }
    

    【讨论】:

    • 什么时候“应该”使用ListViewDataItem而不是ListViewItem
    【解决方案5】:

    此代码适用于我:

    using System;
    using System.Windows.Forms;
    
    public class LVTest : Form {
        public LVTest() {
            ListView lv = new ListView();
            lv.Columns.Add("Header", 100);
            lv.Columns.Add("Details", 100);
            lv.Dock = DockStyle.Fill;
            lv.Items.Add(new ListViewItem(new string[] { "Alpha", "Some details" }));
            lv.Items.Add(new ListViewItem(new string[] { "Bravo", "More details" }));
            lv.View = View.Details;
            Controls.Add(lv);
        }
    }
    
    public static class Program {
        [STAThread] public static void Main() {
            Application.Run(new LVTest());
        }
    }
    

    在一个空的项目中自己试试这个代码。然后,专注于调整它以适应您的应用程序:比较您的程序与此代码的不同之处,并努力将其更改为更接近于我的程序。如果您在程序中失去功能也没关系;只是尝试让基本版本正常工作。然后,一点一点地添加功能,这样您就可以确保程序在每个步骤中仍然可以正常工作。

    如果您仍然遇到问题,请从您的项目中发布更多代码,我们可能会更好地了解您遇到问题的原因。

    【讨论】:

    • 谢谢,这为我指明了正确的方向。问题是什么?我每次都用新数据重新加载列表视图,我做了一个 lvw.Clear() 来清除列表,但这也清除了列,因此在详细信息模式下不显示任何项目。它必须是 lvw.Items.Clear()....
    • 感谢您的解决方案。使用 lv.Items.Clear() 而不是 lv.Clear()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    相关资源
    最近更新 更多