Как вычесть текстовое поле скидки из общего текстового поля более одного раза? - PullRequest
1 голос
/ 20 января 2020

У меня есть общее текстовое поле и текстовое поле скидки, мне нужно вычесть скидку из общей стоимости, вопрос о том, как сохранить общую стоимость в переменной и вычесть скидку из общей суммы, если я ввел скидку более одного раза для Пример:

общая стоимость = 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();
            }
        }

Как вычесть скидку из общей суммы более одного раза, вычесть из общей суммы, а также как предотвратить значение скидки = или больше общей стоимости ?

1 Ответ

1 голос
/ 20 января 2020

Вам нужно захватить оригинал. Если у вас есть кнопка, которая вычисляет Total, вы можете использовать

private decimal _originalTotal = 0;
private void btnCalculate_Click(object sender, EventArgs e)
{
  _originalTotal = decimal.Parse(textOrderTotal.Text);
}

Или, если сам Total вводится вручную,

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();
  }
}

Обратите внимание, что вы должны сделать расчет, основанный на предыдущем захваченном Original Total. Также обратите внимание на следующий код в OP

total = Convert.ToDecimal(textOrderTotal.Text) - Convert.ToDecimal(txtdiscount.Text);

. Вы уже преобразовали Text в двух текстовых полях в десятичное в первых двух строках метода. Вы можете использовать их вместо того, чтобы снова конвертировать. В частности, вместо этого мы будем использовать захваченную исходную сумму.

 total = _originalTotal - discount;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...