2017-04-25 1 views
0

명확한 예제 : 세 개의 항목이 있습니다. 각 항목에는 목록 상자에 항목 이름을 표시하는 추가 단추가 있습니다. 추가를 클릭하면 항목이 한 번 표시됩니다. 다시 추가를 클릭하면 목록 상자에 항목이 두 번 표시됩니다. 클릭 이벤트에서이 간단한 코드가추가 버튼을 클릭하면 같은 항목에 두 개의 행이 없어도 한 항목의 배수가 있다는 것을 보여주는 목록 상자를 만드는 방법이 있습니까?

ListBox.Items.Add("ItemName"); 

를 핸들러 -와 그와 유사한 경우 항목에 "X2"또는 뭔가를 보여 내가, 반복적 인 라인을 보여주는 버튼이나 목록 상자를 코드로 대신 할 수있는 방법이 있나요이다 두 번 이상 추가됩니까?

저는 C# 및 Windows 양식 앱을 사용하고 있습니다.

+0

이미 'x 2'가있는 경우 'x 2'라는 새 항목을 추가하면 어떻게됩니까? 나는 이것을 위해 ListView를 선호한다. –

답변

0

이 아마 내가 그에서 온 것입니다 방법이 도움이

private readonly Dictionary<string, int> _dict = new Dictionary<string, int>(); 

    private void AddNewItem(string item) 
    { 
     if (_dict.ContainsKey(item)) _dict[item]++; 
     else _dict.Add(item,1); 
     listBox1.Items.Clear(); 
     foreach (KeyValuePair<string, int> kvp in _dict) 
     { 
      if (kvp.Value > 1) listBox1.Items.Add(kvp.Key + " X" + kvp.Value); 
      else listBox1.Items.Add(kvp.Key); 
     } 
    } 
    private void button1_Click(object sender, EventArgs e) 
    { 
     AddNewItem("ItemName"); 
    } 

희망!

2

나인 경우 사용자 지정 클래스 (예 : CountableItem)를 만들고 수량 및 이름 필드를 지정합니다. 그런 다음 ToString() 메서드를 재정 의하여 ListBox에 표시 할 내용을 결정할 수 있습니다. 이 같은

뭔가 :

internal class CountableItem 
{ 
    private string _itemName; 
    private int _count; 

    public CountableItem(string itemName) 
    { 
     _itemName = itemName; 
     _count = 1; 
    } 

    public void Increment() 
    { 
     _count++; 
    } 

    public override string ToString() 
    { 
     return String.Format("{0} x {1}", _itemName, _count); 
    } 
} 

당신은 양을 증가시키기 위해 Increment() 방법을 사용하여 다음 목록 상자에 CountableItem의 인스턴스를 추가 할 수 있습니다.

주어진 CountableItem이 이미 ListBox에 있는지 여부를 결정하는 논리가 필요합니다.

관련 문제