1

我进入了学习 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 循环来做到这一点,不是吗?

4

2 回答 2

1

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

实际上,这取决于您DataSource使用哪个来填充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);
        }

为了您的理解,我已经简化了代码,因为有几种方法可以遍历Dictionary...

希望能帮助到你!!

于 2012-07-10T03:44:12.043 回答
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);
}

如果不看你的集合是什么样子,很难提供一个真实的例子,但是对于数组数组,这将起作用。

于 2012-07-10T03:53:57.453 回答