Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从总文本框中多次减去折扣文本框?_C#_Winforms - Fatal编程技术网

C# 如何从总文本框中多次减去折扣文本框?

C# 如何从总文本框中多次减去折扣文本框?,c#,winforms,C#,Winforms,我有总文本框和折扣文本框,我需要从总价值中减去折扣,如果我输入折扣不止一次,我将如何在变量中保存总价值并从总价值中减去折扣,例如: 总价=500,折扣=100,那么总价=500-100=400。 我需要解决的情况是,假设我需要增加更多的折扣,或者将折扣值从100改为200,我将如何编程使其减去500-200=300 而不是400-200=200 我尝试了以下代码文本框键 private void txtdiscount_KeyPress(object sender, KeyPressEventA

我有总文本框和折扣文本框,我需要从总价值中减去折扣,如果我输入折扣不止一次,我将如何在变量中保存总价值并从总价值中减去折扣,例如:

总价=500,折扣=100,那么总价=500-100=400。 我需要解决的情况是,假设我需要增加更多的折扣,或者将折扣值从100改为200,我将如何编程使其减去500-200=300 而不是400-200=200

我尝试了以下代码文本框键

private void txtdiscount_KeyPress(object sender, KeyPressEventArgs e)
        {
            decimal total = Convert.ToDecimal(textOrderTotal.Text);
            decimal discount = Convert.ToDecimal(txtdiscount.Text);

            if (e.KeyChar == Convert.ToChar(Keys.Return))
            {
                total = Convert.ToDecimal(textOrderTotal.Text) - Convert.ToDecimal(txtdiscount.Text);
                textOrderTotal.Text = total.ToString();
            }
        }

如何从总计中减去折扣一次以上从总计中减去,以及如何防止折扣值=或大于总计

您需要捕获原始总数。如果您有一个按钮来计算
总数
,您可以使用

private decimal _originalTotal = 0;
private void btnCalculate_Click(object sender, EventArgs e)
{
  _originalTotal = decimal.Parse(textOrderTotal.Text);
}
或者如果手动输入
总数
本身

private decimal _originalTotal = 0;
private void textOrderTotal_KeyDown(object sender, KeyEventArgs e)
{
  if(e.KeyCode == Keys.Return || e.KeyCode == Keys.Tab)
  {
    _originalTotal = decimal.Parse(textOrderTotal.Text);
  }
}
这样做的目的是在应用折扣之前获取原始总额。现在,你可以申请折扣作为

private void txtdiscount_KeyPress(object sender, KeyPressEventArgs e)
{
  decimal total = _originalTotal;
  decimal discount = Convert.ToDecimal(txtdiscount.Text);

  if (e.KeyChar == Convert.ToChar(Keys.Return))
  {
    total = _originalTotal - discount;
    textOrderTotal.Text = total.ToString();
  }
}
请注意,您需要根据以前捕获的
原始总数
进行计算。还要注意OP中的以下代码

total = Convert.ToDecimal(textOrderTotal.Text) - Convert.ToDecimal(txtdiscount.Text);
您已经在方法的前两行将两个文本框中的
文本
转换为十进制。您可以重用它们,而不是再次转换。在这里,我们将使用捕获的原始总数

 total = _originalTotal - discount;

这看起来很像windows窗体代码,但问题被标记为asp.net?无论如何,答案可能是不更改原始总计,而是使用另一个变量存储原始总计的值减去任何折扣。@stuartd是的,这是windows窗体应用程序,您能告诉我,如果折扣值变化不止一次,如何保持原始总额吗?谢谢。您需要三个字段,而不是两个字段。