Ошибка проверки текстового поля C # Winform - PullRequest
1 голос
/ 23 января 2012

у меня 4 textboxes:

  1. сумма к оплате
  2. денег (Подтвердите деньги клиента)
  3. изменить (если деньги больше суммы)
  4. и баланс (если деньги меньше суммы)

Последний textbox предназначен для ввода (получает / вводит деньги клиента).

Я поместил свой код в обработчик TextChanged textBoxInput (я думаю, что каждый раз, когда пользователь вводит что-то в это текстовое поле, оно будет автоматически обновляться):

private void textBoxInput_TextChanged(object sender, EventArgs e)
{
    textBoxMoney.Text = textBoxInput.Text;

    if (int.Parse(textBoxAmount.Text) > int.Parse(textBoxMoney.Text))
    {
        int balance = int.Parse(textBoxAmount.Text) - int.Parse(textBoxMoney.Text);
        textBoxBalance.Text = balance.ToString();
    }

    if (int.Parse(textBoxMoney.Text) > int.Parse(textBoxAmount.Text))
    {
        int change = int.Parse(textBoxMoney.Text) - int.Parse(textBoxAmount.Text);
        textBoxChange.Text = change.ToString();
    }
}

Он работает правильно, однако всякий раз, когда я нажимаю клавишу Backspace (или очищаю данные) в textbox, я получаю ошибку форматирования. Я также получаю сообщение об ошибке, когда помещаю в него письмо. Как я могу предотвратить появление такого сообщения, если пользователь вводит букву и когда данные очищаются? Кроме того, появляется другая ошибка, когда я задаю большее значение для ex.

Сумма к оплате = 600, я ввожу = 1000, текстовое поле баланса имеет = 550, текстовое поле изменения имеет = 330. Он вычисляется неправильно. Может ли кто-нибудь помочь мне с этим?

1 Ответ

3 голосов
/ 23 января 2012

При работе с деньгами обычно лучше использовать тип Decimal вместо Integer, но для вашего примера, вероятно, лучше использовать метод TryParse() вместо Parse.Ошибка формата возникает из-за того, что при возврате текстовое поле остается пустым и анализ не выполняется.

Быстрое восстановление:

private void textBoxInput_TextChanged(object sender, EventArgs e) {
  textBoxMoney.Text = textBoxInput.Text;

  int amount = 0;
  int money = 0;
  int balance = 0;
  int change = 0;

  int.TryParse(textBoxAmount.Text, out amount);
  int.TryParse(textBoxMoney.Text, out money);

  if (amount > money)
    balance = amount - money;
  if (money > amount)
    change = money - amount;

  textBoxBalance.Text = balance.ToString();
  textBoxChange.Text = change.ToString();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...