如何使用每个属性的列显示ListView中的对象列表

时间:2016-08-04 15:56:08

标签: c# .net list visual-studio-2015 windows-forms-designer

表单调用InitializeComponent后,我创建了一个List<DeletionTarget>

var deletionList = new List<DeletionTarget>();

deletionList.Add(new DeletionTarget("path1", new DateTime(2016, 1, 10), false));
deletionList.Add(new DeletionTarget("path2", new DateTime(2016, 2, 10), true));
deletionList.Add(new DeletionTarget("path3", new DateTime(2016, 3, 10), false));
deletionList.Add(new DeletionTarget("path4", new DateTime(2016, 4, 10), true));
deletionList.Add(new DeletionTarget("path5", new DateTime(2016, 5, 10), false));

DeletionTarget是一个具有以下属性的简单对象:

public string Path;
public DateTime Period;
public bool Recurse;

public DeletionTarget(string path, DateTime period, bool recurse)
{
    Path = path;
    Period = period;
    Recurse = recurse;
}

接下来,我调用InitializeView()方法:

public void InitializeListView()
{
    var header1 = listView1.Columns.Add("Path", -2, HorizontalAlignment.Left);
    var header2 = listView1.Columns.Add("Period", -2, HorizontalAlignment.Left);
    var header3 = listView1.Columns.Add("Recurse", -2, HorizontalAlignment.Left);
}

这应该向ListView添加一些列(DeletionTarget对象中的每个属性一列)。现在是时候将数据添加到ListView

foreach (var item in deletionList)
{
    var lvi = new ListViewItem(new[] { item.Path, item.Period.ToString(), item.Recurse.ToString() });
    listView1.Items.Add(lvi);
}

当我运行程序时,这就是我的表单:

enter image description here

正如你所看到的,这是没用的。我需要每个项目显示在一个单独的行上,每个属性都有一列。有人可以帮我理解我在这里做错了吗?

谢谢

1 个答案:

答案 0 :(得分:0)

发生这种情况是因为View上的ListView选项设置为错误选项(LargeIcon)。我能够通过以下方式克服这个问题:

在Visual Studio中,在Designer模式下单击ListView上的小箭头。选择查看,然后选择详细信息: enter image description here

项目现在显示在每个实例化的新行上,并且所有属性列都存在: enter image description here