Winforms listview не показывает элементы в подробном представлении

Я застрял....

этот мой код для добавления элементов в мой список:

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

когда я выбираю 'View.List' как viewmode, я вижу все элементы.

Когда я выбираю 'View.Details' (который является настройкой, которую я хочу), я вижу... ничего. Ну, ничего, я получаю вертикальную полосу прокрутки, но нет предметов. И я тоже могу прокручивать, но нет предметов....

Я также добавил столбец в listview (не менял код добавления элементов), но это также не сработало

Я должен что-то игнорировать?

Ответ 1

Этот код работает для меня:

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());
    }
}

Попробуйте этот код для себя в пустом проекте. Затем сосредоточьтесь на адаптации его к вашему приложению: сравните, как ваша программа отличается от этого кода, и работайте над ее изменением, чтобы более точно соответствовать моему. Это нормально, если вы потеряете функциональность в своей программе; просто попробуйте запустить базовую версию. Затем добавьте функциональность назад по биту, чтобы вы могли быть уверены, что программа все еще работает на каждом шагу.

Если вы все еще застряли, отправьте больше кода из своего проекта, и мы могли бы лучше понять, почему у вас проблемы.

Ответ 2

Потому что вы должны использовать 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);
        }

Ответ 3

Другой возможной причиной пустых элементов, когда 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);
...

Ответ 4

ListViewItem item = new ListViewItem("item1");
item.SubItems.Add("subitem"); //add subitem if applicable
listview1.Items.Add(item);

Этот результат может быть продан вашей проблеме

Ответ 5

Это произошло и со мной (список не отображает элементы в подробном представлении). Я просто поместил следующее в код (ранее было только в проект) после добавления элементов в список и начал показывать элементы.

lv.View = View.Details;