2011-03-26 103 views
0

我有一個listview的問題。我不確定如何使用循環來填充項目。下面的代碼適用於第一行,我認爲我需要增加行,但我不知道如何。當列表包含超過1項我得到的錯誤信息:將項目添加到循環中的列表視圖

失敗的陣列

foreach (List<string> l in list) 
{ 
    ListViewItem item = new ListViewItem(l[0]); 
    item.SubItems.Add(l[1]); 
    item.SubItems.Add(l[2]); 
    item.SubItems.Add(l[3]); 
    item.SubItems.Add(l[4]); 
    lstBooks.Items.Add(item); 
} 

在比較兩個元素下面是整體功能。我本來與列表中的問題,但它是在這裏populating a list of a list of strings but

解決的視圖設置爲細節

private void ListBooks() 
    { 
     lstBooks.Items.Clear(); 
     lstBooks.Columns.Clear(); 
     lstBooks.Visible = true; 

     List<List<string>> list = db.ListDetailsByGenre(); 
     lstBooks.Columns.Add("Title", 120); 
     lstBooks.Columns.Add("Author", 120); 
     lstBooks.Columns.Add("Library", 120); 
     lstBooks.Columns.Add("Genre", 120); 



    foreach (List<string> l in list) 

      ListViewItem item = new ListViewItem(l[0]); 
      item.SubItems.Add(l[1]); 
      item.SubItems.Add(l[2]); 
      item.SubItems.Add(l[3]); 
      item.SubItems.Add(l[4]); 
      lstBooks.Items.Add(item); 

     } 

    } 

回答

0

我創建了下面的測試,並沒有發生任何錯誤。

 List<List<string>> list = new List<List<string>>(); 

     list.Add(new List<string> { "1a", "1b", "1c", "1d", "1e" }); 
     list.Add(new List<string> { "2a", "2b", "2c", "2d", "2e" }); 
     list.Add(new List<string> { "3a", "3b", "3c", "3d", "3e" }); 
     list.Add(new List<string> { "4a", "4b", "4c", "4d", "4e" }); 
     list.Add(new List<string> { "5a", "5b", "5c", "5d", "5e" }); 

     foreach (List<string> l in list) 
     { 
      ListViewItem item = new ListViewItem(l[0]); 
      item.SubItems.Add(l[1]); 
      item.SubItems.Add(l[2]); 
      item.SubItems.Add(l[3]); 
      item.SubItems.Add(l[4]); 
      lstBooks.Items.Add(item); 
     } 

幾點:

  • 該問題可能是在結構/的list數據 - 提供對list內容的一個例子。

  • Add方法只是將ListViewItem添加到ListView的Items集合的末尾,因此您不需要增加行。

  • 它有可能在這裏並不適用,但您可能希望或需要填充它之前清除ListView中的現有項目:lstBooks.Items.Clear();

列表視圖屬性可能從默認值其他什麼,和你在什麼時候得到錯誤?

+0

他的代碼看起來不錯,你做了什麼改變?只是OP沒有完成他的問題。 – 2011-03-26 09:08:16

+0

@Sanjee - foreach循環不變。我只是通過創建一個列表清單來測試'list'。 – JYelton 2011-03-26 09:12:59

+0

它在到達循環之前被清除。第一個循環完美運行,但第二個循環崩潰。不得不出去一段時間,但我會回來時會提供更多的代碼 – flo 2011-03-26 09:18:47

1
 foreach (List<string> l in list) 

     ListViewItem item = new ListViewItem(l[0]); 
     item.SubItems.Add(l[1]); 
     item.SubItems.Add(l[2]); 
     item.SubItems.Add(l[3]); 
     item.SubItems.Add(l[4]); 
     lstBooks.Items.Add(item); 

    } 

你缺少一個{您的foreach(列表L中的列表),當您上傳的代碼的較大部分,但不是當你表現出函數本身之後。

相關問題