我想在Windows窗体中构建一个程序,用户可以通过按下按钮创建披萨。
我的问题是,当用户多次按下一种成分时,列表只会递增。我尝试了各种方法,但它们似乎不起作用。
我已经看到使用for循环检查列表中的单个项目的解决方案但是我必须实现19次,这不是非常有效(每个按钮一次)
string check = "Thin Base";
if (My_Pizza.Contains(check))
{
My_Pizza.Items.Remove("ThinBase");
My_Pizza.Items.Add("Thin Base");
}
答案 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);
}
}