Scribling Doodle Ответов: 1

Как я могу обновить текстовое поле "изменить", когда вычитаю общую сумму и общую сумму оплаты?


У меня есть 3 текстовых поля, TotalPaid, GrandTotal и Change. Соответственно MSDN, я смог найти 2 подходящих метода, "проверка" и "textchanged". С помощью метода проверки он не будет передавать значения непосредственно в текстовое поле "изменить". С другой стороны, с textchanged это дает мне исключение, когда я опустошаю текстовое поле. Есть какие-нибудь идеи о том, как выполнить эту задачу?

Исключение:
Input string was not in a correct format.

Что я уже пробовал:

private void txtTotalPaid_Validating(object sender, CancelEventArgs e)
{
    decimal value1, value2, result = 0;
    value1 = Convert.ToDecimal(txtTotalPaid.Text);
    value2 = Convert.ToDecimal(txtGrandTotal.Text);
    result = value1 - value2;
    txtTroco.Text = result.ToString();
}

Использовал тот же код для метода Textchanged, увидев, что он не будет работать с проверкой.

1 Ответов

Рейтинг:
9

OriginalGriff

Начните с того, что не используйте Convert для пользовательского ввода - он всегда будет выдавать исключение, если пользователь ошибется.
Вместо этого используйте десятичную дробь.Метод tryparse:

decimal totPaid;
if (!decimal.TryParse(txtTotalPaid.Text, out totPaid))
   {
   // Report input problem to user
   return;
   }
decimal totGrand;
...
Затем используйте проверенные значения при построении результата, и он должен работать:
txtTroco.Text = (totPaid - totGrand).ToString();

Это должно сработать в случае проверки.


Scribling Doodle

Большое вам спасибо, сэр. Я понял все, что вы сказали, и это имеет смысл. Спасибо за ваш ответ

OriginalGriff

Пожалуйста!