2012-12-05 94 views
0

我正在嘗試打開並輸入列表標記。輸入通過一個類接收,附加到一個字符串值,然後添加到列表中。然而,我不能讓這份清單工作。使用列表中的列表填充列表框

public class Deliveries 
{ 
    private string customername; 

    public string CustName 
    { 
     get { return customername; } 
     set { customername = value; } 
    } 
    private string customeraddress; 

    public string CustAddress 
    { 
     get { return customeraddress; } 
     set { customeraddress = value; } 
    } 
    public DateTime deliverytime; 

    public DateTime DelTime 
    { 
     get { return deliverytime; } 
     set { deliverytime = value; } 
    } 
    public string output; 
    private void ToString() 
    { 
     output=deliverytime.ToString() + " " + CustName + " " + CustAddress; 
    } 
} 

該列表存儲在一個名爲Lists的獨立類中。

class Lists 
{ 
    private List<Deliveries> deliveries = new List<Deliveries>(); 

    public void addDelivery(Deliveries del) 
    { 
     deliveries.Add(del); 
    } 


    public List<String> listDeliveries() 
    { 

     List<String> listDeliveries = new List<string>(); 

     foreach (Deliveries del in deliveries) 
     { 
      String delAsString = del.ToString(); 
      listDeliveries.Add(delAsString); 
     } 
     return listDeliveries; 
    } 


    public Deliveries getDelivery(int index) 
    { 

     int count = 0; 
     foreach (Deliveries del in deliveries) 
     { 
      if (index == count) 
       return del; 
      count++; 
     } 
     return null; 
    } 

最後,應該將它添加到列表框的代碼,存儲在窗體的Load

listBox1.Items.Clear(); 
     List<String> delList = ListOut.listDeliveries(); 
     listBox1.Items.AddRange(delList.ToArray()); 

目前,它不添加任何。任何幫助將不勝感激

+0

檢入調試器中有多少項ListOut.listDeliveries();將在頁面加載時返回 – SergeyS

+0

它返回0 –

+0

請將代碼發佈到您創建並填充ListOut的位置。 – SergeyS

回答

0

列表框自動顯示每個對象通過ToString方法返回的字符串。因此,在您的Deliveries類中覆蓋此方法並刪除您的ToString的實施。現在

public override string ToString() 
{ 
    return String.Format("{0} {1} {2}", deliverytime, CustName, CustAddress); 
} 

可以直接添加交付列表框,而無需將其先轉換爲字符串列表。


您可以通過它的索引來訪問列表中的交付,並不需要一個循環

public Deliveries getDelivery(int index) 
{ 
    if (index < 0 || index >= deliveries.Count) { 
     return null; 
    } 
    return deliveries[index]; 
} 

使用調試,以解決您的問題。通過單擊該行左側的灰色邊框,在listDeliveries方法的主體的第一個代碼行上設置一個斷點。一個棕色的點將出現,代碼將暫停在這一行。通過將鼠標指針懸停在變量deliveries上,您將能夠檢查其內容。