2014-04-06 224 views
0

嗨即時嘗試填充我的列表框中的值來自另一個類的對象稱爲produkt有3個字符串值。列表框中的每個項目都包含產品名稱,序列號和價格,如果列表框已包含具有相同產品名稱或倉庫編號的項目,則需要彈出消息框。我的問題是,當我嘗試使用我的List.Add(newProduct)將對象添加到我的列表框中作爲包含這些值的字符串它dosent去我的列表框,當我嘗試打印它說Mediastore.produkt。我已經嘗試了很多不同的方法來解決這個問題,我用toString嘗試將我的對象的值放入一個字符串中。 任何想法如何讓我的Listbox顯示列表的內容?用對象列表填充列表框

public void NewProdct_Click(object sender, EventArgs e)   
{ 
    string productname; 
    string warenumber; 
    string Price_; 

    productname = ProdNamn.Text; 
    warenumber = Varu_Nr.Text; 
    Price_ = pris_.Text; 

    List<produkt> List = new List<produkt>(); 

    if(List.Any(produkt => produkt.Name == productname || produkt.Serialnumber == warenumber)) 
    { 
     MessageBox.Show("Product with that name or warenumber"); 
     return; 
    } 

    var newProdukt = new produkt() 
    { 
     Name = productname, 
     Serialnumber = warenumber, 
     price = Price_ 
    }; 
    string random; 
    random = newProdukt.Name + newProdukt.price + newProdukt.Serialnumber ; 

    List.Add(newProdukt); 
    Console.WriteLine(newProdukt); 
} 
+0

您是否在列表框中設置了DisplayMember和ValueMember? – RezaRahmati

+0

不,我不知道如何做,因爲我宣佈我的Lista(列表框)是產品列表。 如果我改變這將不會我的if(Lista.Any(produkt => produkt.Name == productname || produkt.Serialnumber == warenumber))停止工作? – user3503158

+0

不,它會工作正常,只需設置您的listbox.DispalyMember =「名稱」和listbox.ValueMember =「SerialNumber」,你也有另一種選擇重寫ToString在produkt和返回名稱; – RezaRahmati

回答

0

您可以定義PRODUKT作爲ListBox的數據源的列表,將DisplayMember設置爲一個字段。

或者您可以將ToString()方法添加到您的產品類中。這將用於在列表框中顯示產品。

+0

我聲明我的Listbox(Lista)是一個產品列表,所以如果我改變這將不會我的if(Lista.Any(produkt => produkt.Name == productname || produkt.Serialnumber == warenumber))停止工作? – user3503158

+0

如果我們確實在談論一個WinForms列表框,它是一個按照定義的對象集合,並且將能夠保存任何類的對象,並用他們的ToString()方法顯示它們。如果你沒有提供它,它將顯示班級名稱。或者你可以定義一個顯示成員。順便說一句:我在你給我們看的代碼中看不到__Lista__。 – TaW

+0

對不起,它被認爲是 列表 Lista =新列表(); 而Lista是我的列表框的名稱。 感覺這是一種奇怪的做法,我把我的列表框變成了一個列表,它讓我的大腦變得混亂,但我問我的老師,他說這是最簡單的方法。 你是否認爲我有1個List和1個Listbox,並且它們以某種方式是不同類型但共享相同的變量? – user3503158