使用foreach将项添加到listview中的列/行

时间:2012-07-09 08:10:36

标签: c# listview foreach itemscontrol

我正在学习c#的第5天,并试图找出如何使用foreach循环填充/重新填充包含10行和12列的ListView控件。我编写了我在C中的功能。

void listPopulate(int *listValues[], int numberOfColumns, int numberOfRows)
{
    char table[100][50];
    for (int columnNumber = 0; columnNumber < numberOfColumns; ++columnNumber)
    {
        for (int rowNumber = 0; rowNumber < numberOfRows; ++rowNumber)
        {
            sprintf(&table[columnNumber][rowNumber], "%d", listValues[columnNumber][rowNumber]);
            // ...
        }
    }
}

这是我到目前为止所知道的:

public void listView1_Populate()
{

    ListViewItem item1 = new ListViewItem("value1");
    item1.SubItems.Add("value1a");
    item1.SubItems.Add("value1b");

    ListViewItem item2 = new ListViewItem("value2");
    item2.SubItems.Add("value2a");
    item2.SubItems.Add("value2b");

    ListViewItem item3 = new ListViewItem("value3");
    item3.SubItems.Add("value3a");
    item3.SubItems.Add("value3b");
    ....

    listView1.Items.AddRange(new ListViewItem[] { item1, item2, item3 });
}

我假设我必须在单独的步骤中创建列表项。所以我的问题是:必须有一种方法可以在C#中使用for或foreach循环来执行此操作,不是吗?

2 个答案:

答案 0 :(得分:1)

我不确定我是否理解正确,但我认为你需要的是......

实际上,这取决于您用来填充DataSource的{​​{1}}。 像这样的东西(我在这里使用ListView作为数据源) -

Dictioanry

我已经简化了您的理解代码,因为有几种方法可以迭代 // Dictinary DataSource containing data to be filled in the ListView Dictionary<string, List<string>> Values = new Dictionary<string, List<string>>() { { "val1", new List<string>(){ "val1a", "val1b" } }, { "val2", new List<string>(){ "val2a", "val2b" } }, { "val3", new List<string>(){ "val3a", "val3b" } } }; // ListView to be filled with the Data ListView listView = new ListView(); // Iterate through Dictionary and fill up the ListView foreach (string key in Values.Keys) { // Fill item ListViewItem item = new ListViewItem(key); // Fill Sub Items List<string> list = Values[key]; item.SubItems.AddRange(list.ToArray<string>()); // Add to the ListView listView.Items.Add(item); } ......

希望它有所帮助!!

答案 1 :(得分:1)

你这样做几乎与C中完全一样。只需循环收集......

int i = 0;
foreach (var column in listValues)
{
    var item = new ListViewItem("column " + i++);
    foreach (var row in column)
    {
        item.SubItems.Add(row);
    }        
    listView1.Items.Add(item);
}

很难提供一个真实的例子而没有看到你的集合看起来像什么,但对于一个数组数组,这将是有用的。