簡體   English   中英

如何在 2 個列表框和 output 之間相乘到另一個列表框

[英]How do you multiply between 2 listboxes and output to another listbox

我需要將折扣和金額乘以 output 結果為折扣價,折扣每次都會有所不同在此處輸入圖像描述

` private void Discount_click(object sender, EventArgs e)
    {
        Button d = (Button)sender;
        txtPre.Text = d.Text;


        //Discount Spliitter
        var dis = txtPre.Text;
        char diseperate = '%';
        string[] displit = null;
        displit = dis.Split('%');

        string disarea = displit[0];
        lbDiscount.Items.Add("0." + disarea);

        //Discount Adder
        if (lbDiscount.Items.Count == lbAmount.Items.Count)
        {
            string strDiscount, strAmount;
            decimal discount, amount, price;
            decimal sum = 0;
            lbDiscPrice.Items.Clear()   ;
            for (int i = 0; i < lbDiscount.Items.Count; i++)
            {
                strDiscount = lbDiscount.Items[i].ToString();
                strAmount = lbAmount.Items[i].ToString();
                if (decimal.TryParse(strDiscount, out discount))
                {
                    if (decimal.TryParse(strAmount, out amount))
                    {
                        price = amount - (discount * amount);
                        lbDiscPrice.Items.Add(price);
                        sum += price;
                    }
                    else
                    {
                        MessageBox.Show("Invalid amount: " + strAmount);
                    }
                }
                else
                {
                    MessageBox.Show("Invalid discount: " + strDiscount);
                }
            }
            lblSub.Text = sum.ToString();
        }
        else
        {
            MessageBox.Show("Number of items does not match between Discount and Amount!");
        }
    }`

這就是我現在所擁有的,但它似乎不起作用。

這些是列表框看起來像其中的數據,我需要乘以

這些是帶有數據的列表框的樣子,我需要將第三個和第四個框相乘,然后將 output 的結果放入最右側的列表框中。 折扣為小數形式,並且會有所不同

您的代碼不起作用,因為:

  • 未實現指定的乘法
  • 您的第一個循環與第二個循環分離。 它甚至不會將其結果存儲在任何地方,因此基本上什么都不做。

有不同的方法來解決這個問題。 我的偏好是完全避免循環並使用 LINQ 代替如下:

lblSub.Text =
   lbDiscount.Items.Zip(lbAmount.Items, (discount, amount) =>
      Convert.ToDecimal(discount) * Convert.ToDecimal(amount))
   .Sum()
   .ToString();

如果你想用老式的方式來做,它看起來像:

private void button1_Click(object sender, EventArgs e)
{
    if (lbDiscount.Items.Count == lbAmount.Items.Count)
    {
        string strDiscount, strAmount;
        decimal discount, amount, price;
        decimal sum = 0;
        lbDiscPrice.Items.Clear();
        for(int i=0; i<lbDiscount.Items.Count; i++)
        {
            strDiscount = lbDiscount.Items[i].ToString();
            strAmount = lbAmount.Items[i].ToString();
            if (decimal.TryParse(strDiscount, out discount))
            {
                if (decimal.TryParse(strAmount, out amount))
                {
                    price = amount - (discount * amount);
                    lbDiscPrice.Items.Add(price);
                    sum += price;
                }
                else
                {
                    MessageBox.Show("Invalid amount: " + strAmount);
                }
            }
            else
            {
                MessageBox.Show("Invalid discount: " + strDiscount);
            }
        }
        lblSub.Text = sum.ToString();
    }
    else
    {
        MessageBox.Show("Number of items does not match between Discount and Amount!");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM