2012-11-14 4 views
0

목록 상자는 클래스 프로젝트의 요구 사항이라고 말하는 것으로 시작하겠습니다. 난 그냥 그것을 spiff하고 목록 상자에 추가하기 전에 문자열을 서식을 더 좋게 보이게하려고합니다. 문자열을 형식화하는 Product.ToString()에 대한 재정의가 있지만 목록 상자에 추가하면 서식이 사라집니다.C#에서 목록 상자의 문자열 서식 지정

public override string ToString() 
{ 
    string newFormat = string.Format("{0,0}{1,20}", Name, Price); 
    return newFormat; 
} 

업데이트 방법 :

protected void updateLists() 
{ 
    availableProducts_LB.Items.Clear(); 
    foreach (Product p in customer.AvailableProducts) 
     availableProducts_LB.Items.Add(p.ToString()); 

    shoppingCart_LB.Items.Clear(); 
    foreach (Product p in customer.shoppingCartList) 
     shoppingCart_LB.Items.Add(p.ToString()); 
} 
+1

return newFormat에 중단 점을 배치 할 때; newFormat의 값은 무엇입니까 –

+0

어떻게 출력되는지를 지정합니다. –

+1

FYI - 그냥'Items.Add (p)'할 수 있고, 목록 상자는 당신을 위해'ToString()'을 호출 할 것입니다. –

답변

0

그냥 직접 목록 상자에 제품 인스턴스를 추가 (ToString 호출하지 않는) :

availableProducts_LB.Items.Clear(); 
foreach (Product p in customer.AvailableProducts) 
    availableProducts_LB.Items.Add(p); 

ToString 방법 클래스 Product에서

ListBox는 Product.ToString 메서드를 사용하여 항목을 표시합니다. 목록에.

그런 다음 ToString의 return 문에 중단 점을 지정하여 예상 한 값인지 확인하십시오.

+1

예, 좋습니다. 그러나 ToString()을 호출하는 것이 작동하지 않는다면, 이것 역시 작동하지 않을 것이다. –

+0

실제로 ToString()을 수동으로 호출하는 것과는 다른 결과가 나타 납니까? – Bobson

+0

@Bobson : 당신이 * 보는 * 결과는 다르지 않지만 내부적으로 제품을 나타내는 문자열 * 대신에 상호 작용할 때 내부적으로 실제 제품 항목을 목록 상자에서 가져올 수 있습니다. – Patrick