2011-04-26 28 views
1

我們已經給出了一個使用用來填充列表框的IList的例子。我想使用相同的過程來填充列表中的對象,但要填充ListView。在課堂上創建IList對象 - 在表單中填充listview

從Object類的代碼如下所示:

public void ListClients(IList list) 
{ 
    list.Clear(); 
    for (int i = 0; i < MAX_CLIENTS; ++i) 
    { 
     if (myClients[i] == null) 
      continue; 
     list.Add(myClients[i].FullName); 
    } 
} 

形式的代碼,就像這樣:

private void ListClientButton_Click(object sender, EventArgs e) 
{ 
    CDB.ListClients(ListClientsBox.Items); 
} 

我已經試過許多方法,但我想,我不充分理解IList的概念。是否可以在IList的Details視圖中填充listview?

+0

是ListView.Items也實現了合同IList。所以它應該可以在你的ListClients方法中被替代。 IList只是任何希望被用作IList的類必須實現的合同。例如ListViewItemCollection http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.listviewitemcollection%28v=vs.80%29.aspx – Gishu 2011-04-26 07:27:26

+0

我已經嘗試過,但在列表視圖中的形式它只將對象名稱放在第一列 – flo 2011-04-30 03:24:58

回答

2

您的ListView控件是否有任何列設置?如果沒有,內容將不可見。嘗試:

private void ListClientButton_Click(object sender, EventArgs e) 
{ 
    ListClientsBox.Columns.Add("Full name"); 
    CDB.ListClients(ListClientsBox.Items); 
} 

編輯:

我已經運行一些測試,你在發佈註釋代碼似乎要被罰款。你可能只需要調整幾個ListView的性質,取決於顯示你的目標爲:

// perpare ListView beforehand 
this.listView.Columns.Add("First name"); 
this.listView.Columns.Add("Email"); 
this.listView.Columns.Add("Country"); 
this.listView.View = View.Tile; 
// if tile height is too small, some data might not be visible 
this.listView.TileSize = new Size(180, 50); 

// sample data 
var people = new[] 
{ 
    new { FirstName = "John", Email = "[email protected]", Country = "USA" }, 
    new { FirstName = "Betty", Email = "[email protected]", Country = "Canada" }, 
    new { FirstName = "Steven", Email = "[email protected]", Country = "Brazil" }, 
}; 

foreach (var person in people) 
{ 
    ListViewItem item = new ListViewItem(person.FirstName); 
    item.SubItems.Add(person.Email); 
    item.SubItems.Add(person.Country); 
    this.listView.Items.Add(item); 
} 

這是怎樣的ListView樣子,既View.TileView.DetailsListView examples

+0

中,它具有列設置。我想要做的是與我發佈的示例有點不同。我想使用對象列表並填充列表視圖,如下所示: – flo 2011-04-30 02:48:47

+0

foreach(SalesRecord在銷售中) { 銷售員p = s.SalesPerson; ListViewItem item = new ListViewItem(p.FullName); item.SubItems.Add(p.Email); item.SubItems.Add(p.Country); item.SubItems.Add(p.Phone); list.Add(item); } – flo 2011-04-30 03:25:38

+0

@flo:你試過你的代碼嗎?什麼不起作用? – 2011-04-30 13:33:08