我正在学习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循环来执行此操作,不是吗?
答案 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);
}
很难提供一个真实的例子而没有看到你的集合看起来像什么,但对于一个数组数组,这将是有用的。