VladanCole Ответов: 2

Проблема с добавлением двух чисел в C#


Я использую два текстовых поля и метку. Я использовал событие TextChanged, чтобы добавить числа. Вы вводите первое число в textBox1 и второе число в textBox2. Как только вы вводите число в textBox2, оно добавляет числа, и сумма появляется в метке ниже. Но когда я удаляю номер из textBox2, программа перестает работать, и это появляется " исключение формата было необработано. Входная строка была не в правильном формате."

private void textBox2_TextChanged(object sender, EventArgs e)
        {
            double a = Double.Parse(textBox1.Text);
            double b = Double.Parse(textBox2.Text);
            
            label3.Text = "SUM: " + (a + b);

            
        }

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

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

Я пытался только искать решение в интернете, но мне это не удалось. Почти каждый раз, когда у меня возникает проблема, я ищу решение в интернете.

Any tips on how am I supposed to find the solution to my next problem myself, instead of asking for help?

Gerry Schmitz

Итог: не "предполагайте", что поля ввода содержат допустимые данные / числа.

2 Ответов

Рейтинг:
2

OriginalGriff

Во - первых, не используйте Parse при преобразовании пользовательского ввода-они всегда делают ошибки, и Parse выдаст исключение и приведет к сбою вашего приложения. Использовать метод tryparse :

double a;
double b;
if (!Double.TryParse(textBox1.Text, out a))
   {
   ... Report problem to user or ignore it
   return;
   }
if (!Double.TryParse(textBox2.Text, out b))
   {
   ... Report problem to user or ignore it
   return;
   }
Затем вы можете добавить их и представить общую сумму. Есть несколько способов сделать это:
label3.Text = "SUM: " + (a + b).ToString();
При этом используется конкатенация строк, и это не обязательно хорошая идея.
label3.Text = string.Format("SUM: {0}", a + b);
Это будет работать на любой версии C#.
двойной результат = a + b;
label3.Text = $"SUM: {result}";
Будет работать с C# V6 и далее.


Рейтинг:
0

0x01AA

Теперь пустая строка также является неопределенным двойным значением. Используйте двойное.TryParse вместо double.Разбор.Двойной.Метод Tryparse Методом: (Типа String, NumberStyles, Объекта Iformatprovider, Двойные) (Система)[^]
С помощью TryParse вы можете легко определить, действительно ли пользовательский ввод был числом.
Надеюсь, это поможет.