C# 如果单击“添加”按钮,是否有一种方法可以使列表框显示一个项目有多个,而没有两行包含同一项目?
举例说明: 我有三个项目,每个项目都有一个add按钮,用于在列表框中显示项目的名称。如果单击“添加”,则会在列表框中显示项目一次,如果再次单击“添加”,则会在列表框中显示项目两次。这就是单击事件处理程序下面的简单代码-C# 如果单击“添加”按钮,是否有一种方法可以使列表框显示一个项目有多个,而没有两行包含同一项目?,c#,button,listbox,items,C#,Button,Listbox,Items,举例说明: 我有三个项目,每个项目都有一个add按钮,用于在列表框中显示项目的名称。如果单击“添加”,则会在列表框中显示项目一次,如果再次单击“添加”,则会在列表框中显示项目两次。这就是单击事件处理程序下面的简单代码- ListBox.Items.Add("ItemName"); 有没有一种方法可以让我对按钮或列表框进行编码,以在添加两次或更多项时显示“x2”或类似内容,而不是显示重复的行 我正在使用C#和windows窗体应用程序。如果是我,我会创建一个自定义类(比如,CountableIt
ListBox.Items.Add("ItemName");
有没有一种方法可以让我对按钮或列表框进行编码,以在添加两次或更多项时显示“x2”或类似内容,而不是显示重复的行
我正在使用C#和windows窗体应用程序。如果是我,我会创建一个自定义类(比如,
CountableItem
),并为其提供数量和名称字段。然后,我们可以重写ToString()
方法来确定列表框中将显示什么
大概是这样的:
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
是否已在列表框中。如果是我,我将创建一个自定义类(例如,CountableItem
),并为其提供数量和名称字段。然后,我们可以重写ToString()
方法来确定列表框中将显示什么
大概是这样的:
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()
方法增加数量
当然,您将需要逻辑来确定给定的
可数项是否已在列表框中。这可能是我得出的结论:
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");
}
private readonly Dictionary\u dict=new Dictionary();
私有void AddNewItem(字符串项)
{
如果(_dict.ContainsKey(item))_dict[item]++;
其他条款添加(第1项);
listBox1.Items.Clear();
foreach(输入的键值对kvp)
{
如果(kvp.Value>1)列表框1.Items.Add(kvp.Key+“X”+kvp.Value);
else listBox1.Items.Add(kvp.Key);
}
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
AddNewItem(“ItemName”);
}
希望这有帮助 我可能会这样说:
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");
}
private readonly Dictionary\u dict=new Dictionary();
私有void AddNewItem(字符串项)
{
如果(_dict.ContainsKey(item))_dict[item]++;
其他条款添加(第1项);
listBox1.Items.Clear();
foreach(输入的键值对kvp)
{
如果(kvp.Value>1)列表框1.Items.Add(kvp.Key+“X”+kvp.Value);
else listBox1.Items.Add(kvp.Key);
}
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
AddNewItem(“ItemName”);
}
希望这有帮助 如果您已经有一个“x2”,那么如果您添加一个名为“x2”的新项目会怎么样?我更喜欢ListView。如果您已经有一个'x2',如果您添加一个名为'x2'的新项目会怎么样?我更喜欢ListView。