c sharp -winform应用程序与listview

时间:2015-05-31 14:45:05

标签: c# listview

我在C sharp windows窗体应用程序中有一个listview,如下所示。 Form_load()方法中包含以下代码行。

但问题是它没有开始从第一列插入一行。相反,它从第二列开始。因为传递给最后一列的值总是丢失。

        listView1.Columns.Add("ColumnOne", 150);
        listView1.Columns.Add("ColumnTwo", 150);
        listView1.Columns.Add("ColumnThree", 150);
        listView1.Columns.Add("ColumnFour", 150);
        listView1.Columns.Add("ColumnFive", 150);
        listView1.Columns.Add("Column6", 150);

        foreach (MyClass et in _myData)
        {
            ListViewItem lt = new ListViewItem();

            lt.SubItems.Add(et.DataOne.ToString());

            lt.SubItems.Add(et.DataTwo.ToString());
            lt.SubItems.Add(et.DataThree.ToString());
            lt.SubItems.Add(et.DataFour.ToLongDateString());
            lt.SubItems.Add(et.DataFive);
            lt.SubItems.Add(et.DataSix);
        }

我尽力了。我甚至没有看到我犯了一个错误。有人可以给我一个解决方案吗?

1 个答案:

答案 0 :(得分:3)

对于不同的列,ListView有点笨拙。 Detail视图中第一列中显示的内容实际上是ListViewItem本身的文本,而不是第一个SubItem的文本。所以你要做的就是开始为DataTwosubgroups分配DataOne等等ListViewItem.Text

listView1.Columns.Add("ColumnOne", 150);
listView1.Columns.Add("ColumnTwo", 150);
listView1.Columns.Add("ColumnThree", 150);
listView1.Columns.Add("ColumnFour", 150);
listView1.Columns.Add("ColumnFive", 150);
listView1.Columns.Add("Column6", 150);

foreach (MyClass et in _myData)
{
    ListViewItem lt = new ListViewItem(et.DataOne.ToString());

    lt.SubItems.Add(et.DataTwo.ToString());
    lt.SubItems.Add(et.DataThree.ToString());
    lt.SubItems.Add(et.DataFour.ToLongDateString());
    lt.SubItems.Add(et.DataFive);
    lt.SubItems.Add(et.DataSix);

    // I added this to your code
    listView1.Items.Add(lt);
}