c#用于循环-加和减总和

问题描述 投票:0回答:2

我正在为一个大学项目创建比萨菜单,并且有一个饮料区。我有一个digitalupdown供用户选择他们想要的特定饮料的量。我已经能够创建一个for循环,以便在增加numericupdown的值时将其添加到总数上,但是我正在努力寻找一种方法,当减小numericupdown的值时从总数中减去£0.90。

可乐数字代码的代码

private void numCola_ValueChanged(object sender, EventArgs e)
{
  for (int i = 1; i < 2; i++)
  {
   Total = Total + Cola;
   lblTotal.Text = Total.ToString("C");
  }
}

编辑

现在,我发现我需要创建一个新事件来更新总数,我已经将此方法添加到我的奶酪比萨和额外的奶酪中。但是,当我同时选择了这两项(总计= 4.00英镑),然后我有1瓶可乐时,第一个可乐只收取0.40英镑,而不是0.90英镑。

        private void UpdateTotal()
        {
            Total = Convert.ToDouble(radCheeseTrad.Checked) * CheeseTraditional;
            Total += Convert.ToDouble(chkCheeseExtraCheese.Checked) * ExtraCheese;
            Total += Convert.ToDouble(numCola.Value) * Cola;
            lblTotal.Text = $"{Total:C}";
        }

        private void numCola_ValueChanged(object sender, EventArgs e)
        {
            UpdateTotal();
        }

        private void radCheeseTrad_MouseClick(object sender, MouseEventArgs e)
        {
            lstOrder.Items.Add("Cheese and Tomato Traditional");
            UpdateTotal();
        }

        private void chkCheeseExtraCheese_MouseClick(object sender, MouseEventArgs e)
        {
            lstOrder.Items.Add("Extra Cheese");
            UpdateTotal();
            chkCheeseExtraCheese.Checked = false;
        }
c#
2个回答
1
投票

我找到了一种使这项工作有效的方法。我必须创建一个新事件来更新总数。

        private void UpdateTotal()
        {
            Total = Convert.ToDouble(numCola.Value) * Cola;
            lblTotal.Text = $"{Total:C}";
        }

        private void numCola_ValueChanged(object sender, EventArgs e)
        {
            UpdateTotal();
        }

0
投票

您的循环通过重复加法执行乘法。最好通过实际乘法来做到这一点。您还可以循环设置标签;尽管有效,但只有最后一次分配才有效,因为在循环仍处于控制状态时,UI不会显示分配给标签文本的瞬态值。

为此,您需要保留要购买的物品的集合以及每个物品的数量。然后将总数计算为单位价格的产品总和乘以所购买商品的数量:

// This is pseudo-code; you will need to substitute your actual
// collections when you make them.
private void num_ValueChanged(object sender, EventArgs e) {
    decimal total = 0;
    foreach (var product in products) {
        // Get numeric up-down for product
        var numUpDown = ...
        total += Convert.ToInt32(numUpDown.Value) * product.Price;
    }
    lblTotal.Text = total.ToString("C");
}

请注意,这种方法使您可以对所有产品使用相同的事件处理程序。

© www.soinside.com 2019 - 2024. All rights reserved.