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 に答える