如何使用列表垂直填充listview的每一列

时间:2013-11-15 15:10:54

标签: c#

我有从textfiles导入的数据,传输到sqlite db,然后将其传输到LISTS。现在我想在LISTVIEW中向用户显示这些列表。每列应包含一个列表。

下面,第二列的内容非常精细。但是,第3列和第4列应垂直填充与其颜色值对应的项目。

enter image description here

从下面的代码中,我想用MaxLen列表和PercentPopList列表填充第3和第4列。 (是的,我知道我跳过一个专栏,但我稍后会解决这个问题)

我是编程新手,我无法弄清楚如何做到这一点。

  ListViewItem lvi = new ListViewItem();
              foreach (object o in SeqIrregularities)
              {
                  lvi.SubItems.Add(o.ToString());
                  listView1.Items.Add(lvi);//Adds a new row
                  lvi = new ListViewItem();
              }

              listView1.Items.Add(lvi);//Adds a new row
              lvi = new ListViewItem();

               foreach (object a in MaxLen)
              {
                  lvi.SubItems.Add(a.ToString());
              }

              listView1.Items.Add(lvi);//Adds a new row
              lvi = new ListViewItem();

              foreach (object b in PercentPopList)
              {
                  lvi.SubItems.Add(b.ToString());
              }

              listView1.Items.Add(lvi);//Adds a new row

2 个答案:

答案 0 :(得分:3)

您的数据格式错误。简化,您似乎有这样的数据:

var firstColumnValues = new List<int>();
var secondColumnValues = new List<int>();
var thirdColumnValues = new List<int>();

虽然每个列表本身都有意义,但它们目前并没有以任何有意义的方式相互关联。你需要做的是考虑代表一个“数据记录”的对象的格式。仍然过于简化,像这样:

class RecordOfValues
{
    public int FirstValue { get; set; }
    public int SecondValue { get; set; }
    public int ThirdValue { get; set; }
}

然后你只有一个列表:

var listOfRecords = new List<RecordOfValues>();

此时,您将有一个“记录”列表绑定到ListView

答案 1 :(得分:1)

据我所知,您没有太多经验,也无法轻易提出算法来解释建议的修改;这里有一个示例代码,展示了如何扩展代码以填充3个不同列表中的三个不同列:

 List<string> SeqIrregularities = new List<string>();
 SeqIrregularities.Add("1");
 SeqIrregularities.Add("2");
 SeqIrregularities.Add("3");

 List<string> MaxLen = new List<string>();
 MaxLen.Add("4");
 MaxLen.Add("5");
 MaxLen.Add("6");

 List<string> PercentPopLis = new List<string>();
 PercentPopLis.Add("7");
 PercentPopLis.Add("8");
 PercentPopLis.Add("9");
 PercentPopLis.Add("10");
 PercentPopLis.Add("11");


 int totItems = SeqIrregularities.Count - 1;
 if (MaxLen.Count - 1 > totItems) totItems = MaxLen.Count - 1;
 if (PercentPopLis.Count - 1 > totItems) totItems = PercentPopLis.Count - 1;

 for (int i = 0; i <= totItems; i++)
 {
     ListViewItem lvi = new ListViewItem();
     string item1 = "";
     string item2 = "";
     string item3 = "";

     if (SeqIrregularities.Count - 1 >= i) item1 = SeqIrregularities[i];
     if (MaxLen.Count - 1 >= i) item2 = MaxLen[i];
     if (PercentPopLis.Count - 1 >= i) item3 = PercentPopLis[i];

     lvi.SubItems.Add(item1);
     lvi.SubItems.Add(item2);
     lvi.SubItems.Add(item3);

     listView1.Items.Add(lvi);
 }