[英]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.