检查列表中的项目并做出决定

时间:2018-02-18 17:16:18

标签: c#

我想在Windows窗体中构建一个程序,用户可以通过按下按钮创建披萨。

我的问题是,当用户多次按下一种成分时,列表只会递增。我尝试了各种方法,但它们似乎不起作用。

我已经看到使用for循环检查列表中的单个项目的解决方案但是我必须实现19次,这不是非常有效(每个按钮一次)

string check = "Thin Base";
        if (My_Pizza.Contains(check))
        {
            My_Pizza.Items.Remove("ThinBase");
            My_Pizza.Items.Add("Thin Base");
        }

enter image description here

2 个答案:

答案 0 :(得分:0)

你有“ThinBase”和“Thin Base”。不一样的事情。

此外,如果项目已在列表中,则无需执行任何操作。只需反转您的支票

string check = "Thin Base";
if (!My_Pizza.Items.Contains(check))
{
    My_Pizza.Items.Add(check);
}

答案 1 :(得分:0)

一般的想法不是硬编码字符串值,而是创建可以执行所需操作的可重用方法:检查列表中是否已存在某些值,如果不存在,请将此项添加到列表中。这有助于您避免重复代码。

在按钮事件处理程序中,您只需调用此方法并提供字符串值作为参数。我不确定你是如何处理按钮点击的,但我建议再次创建单个可重用方法并从button.Text属性中获取字符串值。

以下是您演示该想法的代码示例。

    private void OnButtonClick(object sender, EventArgs e)
    {
        Button clickedButton = (Button) sender;
        if (clickedButton != null)
        {
            string buttonContent = clickedButton.Text;
            CheckAndAdd(buttonContent);
        }
    }

    private void CheckAndAdd(string valueToCheck)
    {
        if (!My_Pizza.Items.Contains(valueToCheck))
        {
            My_Pizza.Items.Add(valueToCheck);
        }
    }