Пример для пояснения: у меня есть три элемента, у каждого из которых есть кнопка добавления, чтобы показать название элемента в списке. Если я нажму «Добавить», он покажет элемент один раз, если я нажму «Добавить», он дважды покажет элемент в списке. То есть с этим простым кодом под обработчиком события click-
ListBox.Items.Add("ItemName");
Есть ли способ, которым я могу кодировать кнопку или список, чтобы вместо отображения повторяющихся строк отображать «x2» или что-то подобное, когда элемент добавляется дважды или более?
Я использую C # и приложение Windows Form.
2 ответа
Это, вероятно, способ, которым я пришел бы к этому:
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");
}
Надеюсь это поможет!
Если бы это был я, я бы создал собственный класс (скажем, 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);
}
}
Вы можете добавить экземпляры CountableItem
в список, а затем использовать метод Increment()
для увеличения количества.
Вам, конечно, понадобится логика, чтобы определить, присутствует ли данный CountableItem
в ListBox.
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.