2012-07-09 4 views
1

저는 C# 학습 5 일째입니다. foreach 루프를 사용하여 ListView 컨트롤을 채우는 방법을 알아 보려고합니다. 목록 뷰 컨트롤에 10 행 12 열이 포함되어 있습니다. .foreach를 사용하여 listview의 열/행에 항목 추가

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 }); 
} 

는 내가의 생성을 수행해야 겠지 : 나는

여기
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]); 
      // ... 
     } 
    } 
} 

내가 지금까지 알아 낸 것입니다 C.에 후 난 기능을 코딩 한 항목을 별도의 단계로 나열하십시오. 그래서 내 질문은 : for 또는 foreach 루프와 함께 C#에서 이렇게 할 수있는 방법이 있어야합니다, 안돼?

+0

무엇이 문제입니까? –

+0

내 질문은 : for 또는 foreach 루프를 사용하여 C#에서이 작업을 수행 할 수있는 방법이 있어야합니까? – PaeneInsula

답변

1

나는

실제로 당신이 ListView을 채우기 위해 사용하는 당신의 DataSource에 따라 달라집니다 ... 내가 제대로 이해하면 잘 모르겠지만, 여기에 내가 당신이 필요로 생각합니다. (나는 여기에 데이터 소스로 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을 반복하는이 여러 가지 있기 때문에, 이해의 코드를 단순화

는 희망이 도움이 !! !! 당신은 컬렉션을 C. 그냥 루프와 거의 동일한을 이렇게

1

...

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); 
} 

그것은 컬렉션이 어떻게 생겼는지 보지 않고 실제 예제를 제공하기 어렵지만,의 배열 배열이 작동합니다.

관련 문제