2014-04-06 2 views
0

안녕하세요, 저는 listbox에 3 개의 문자열 값을 가진 produkt라는 다른 클래스의 객체 값을 채우려고합니다. 목록 상자의 각 항목은 productname, 일련 번호 및 가격을 갖도록 돋보이게되며 listbox에 이미 동일한 제품 이름 또는 동일한 항목이 포함 된 항목이 포함되어있는 경우 메시지 상자가 나타나기를 원합니다. 내 문제는 내 List.Add (newProduct) 사용하려고 할 때 목록 상자에 내 목록 상자에 가서 이러한 값을 포함하는 문자열로 개체를 추가 할 수 및 그것을 인쇄하려고 할 때 Mediastore.produkt 말한다. 나는 이것을 해결하기 위해 여러 가지 방법을 시도했다. 나는 toString을 사용하여 내 객체의 값을 문자열로 만들었다. 아이디어 목록의 내용을 표시하도록 내 Listbox를 가져올 수있는 방법은 무엇입니까?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 (목록 상자)가 제품 목록임을 선언 했으므로 어떻게해야할지 모르겠다. 만약 내가 이것을 바꿀 수 없다면 (Lista.Any (produkt => produkt.Name == productname || produkt.Serialnumber == warenumber)) 작동이 멈춘다? – user3503158

+0

아니, 잘 작동합니다 그냥 listbox.DispalyMember = "이름"및 listbox.ValueMember = "SerialNumber"설정하고 또한 다른 옵션을 가지고 toString produkt 및 반환 이름; – RezaRahmati

답변

0

produkt 목록을 ListBox의 데이터 소스로 정의하고 DisplayMember를 필드로 설정할 수 있습니다.

또는 ToString() 메서드를 제품 클래스에 추가 할 수 있습니다. 그러면 ListBox에 제품을 표시하는 데 사용됩니다.

+0

내 목록 상자 (Lista)가 제품 목록이므로 이렇게 변경하면 내 List (Lista.Any (produkt => produkt.Name == productname || produkt.Serialnumber == warenumber))가 작동하지 않습니까? – user3503158

+0

WinForms ListBox에 대해 실제로 말하면 정의에 따른 개체 컬렉션이며 모든 클래스의 개체를 보유하고 ToString() 메서드로 표시 할 수 있습니다 .. 제공하지 않으면 클래스 이름. 또는 디스플레이 멤버를 정의 할 수 있습니다. BTW : 우리에게 보여준 코드에는 __Lista__이 없습니다. – TaW

+0

그래 죄송합니다. 목록 Lista = 새 목록 (); Lista는 내 목록 상자의 이름입니다. 이런 식으로 생각합니다. 목록 상자를 목록으로 변경하면 내 머리가 엉망이 되겠지만 선생님에게 물어 보니 이것이 가장 쉬운 방법이라고했습니다. 대신에 1 List와 1 Listbox를 가지고 있고 어떻게 든 다른 유형이지만 동일한 변수를 공유하고 있다고 sugest합니까? – user3503158