Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果单击“添加”按钮,是否有一种方法可以使列表框显示一个项目有多个,而没有两行包含同一项目?_C#_Button_Listbox_Items - Fatal编程技术网

C# 如果单击“添加”按钮,是否有一种方法可以使列表框显示一个项目有多个,而没有两行包含同一项目?

C# 如果单击“添加”按钮,是否有一种方法可以使列表框显示一个项目有多个,而没有两行包含同一项目?,c#,button,listbox,items,C#,Button,Listbox,Items,举例说明: 我有三个项目,每个项目都有一个add按钮,用于在列表框中显示项目的名称。如果单击“添加”,则会在列表框中显示项目一次,如果再次单击“添加”,则会在列表框中显示项目两次。这就是单击事件处理程序下面的简单代码- ListBox.Items.Add("ItemName"); 有没有一种方法可以让我对按钮或列表框进行编码,以在添加两次或更多项时显示“x2”或类似内容,而不是显示重复的行 我正在使用C#和windows窗体应用程序。如果是我,我会创建一个自定义类(比如,CountableIt

举例说明: 我有三个项目,每个项目都有一个add按钮,用于在列表框中显示项目的名称。如果单击“添加”,则会在列表框中显示项目一次,如果再次单击“添加”,则会在列表框中显示项目两次。这就是单击事件处理程序下面的简单代码-

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。