Пожалуйста, обратите внимание, что когда вы кладете, скажем 15
в textBox6.Text
, у вас есть textBox6_TextChanged
, называемый , дважды , один раз для 1
и затем для 15
.Предположим, у нас есть txtTotal.Text == "1000.00"
.Затем мы начинаем вводить 15
: когда мы помещаем 1
в textBox6.Text
, мы имеем 1%
от начального 1000.00
:
txtTotal.Text = 990.00
тогда, когда мы помещаем 5
и, таким образом, имеем15%
из ранее вычисленных 990.00
txtTotal.Text = 841.50
Когда правильный результат (вычисление 15%
из 1000.00
) равен
txtTotal.Text = 850.00
Я предлагаю два текстовые поля, скажем txtTotal.Text
и txtTotalWithDiscount.Text
private void textBox6_TextChanged(object sender, EventArgs e) {
if (decimal.TryParse(txtTotal.Text, out decimal total) &&
decimal.TryParse(textBox6.Text, out decimal percent)) {
decimal discount = total / 100m * percent;
textBox7.Text = (discount).ToString("0.00");
txtTotalWithDiscount.Text = (total - discount).ToString("0.00");
}
else {
//TODO: if txtTotal.Text or textBox6.Text is of invalid format
// Or txtTotalWithDiscount.Text = txtTotal.Text;
txtTotalWithDiscount.Text = "?";
}
}