Ошибка System.FormatException: "Input string was not in a correct format."

не знаю, как исправить ошибку, столкнулся с ней при написании кода для решения задачи Сама задача,прошу помощи с исправлением ошибки, заранее спасибо)

P.s Все еще сырое, только начал что-то писать, а уже засыпался ошибками)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _23
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            int C = Convert.ToInt32(textBox1.Text); // Стоимость C1
            int CC = Convert.ToInt32(textBox2.Text); // Стоимость C2
            int NN = Convert.ToInt32(textBox3.Text); // Скидка n2 - ответ
            int N = Convert.ToInt32(textBox4.Text); // Скидка n1

            if (CC>C)
            {
                NN = C;    //  (C * N) + ((CC - C) * NN);
            }
            else
            {
                Console.WriteLine("Ошибка ввода стоимости");
            }


        }

        private void label3_Click(object sender, EventArgs e)
        {

        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

Ответы (1 шт):

Автор решения: aepot

Эта ошибка возникает, когда в текстбоксе не целое число, а например пусто или просто текст. Чтобы она вообще не возникала, все 4 текстбокса должны содержать числа на момент нажатия кнопки.

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

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        int C = Convert.ToInt32(textBox1.Text); // Стоимость C1
        int CC = Convert.ToInt32(textBox2.Text); // Стоимость C2
        int NN = Convert.ToInt32(textBox3.Text); // Скидка n2 - ответ
        int N = Convert.ToInt32(textBox4.Text); // Скидка n1

        if (CC>C)
        {
            NN = C;    //  (C * N) + ((CC - C) * NN);
        }
        else
        {
            Console.WriteLine("Ошибка ввода стоимости");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Ошибка: {ex.Message}");
    }
}

Еще старайтесь давать переменным осмысленные имена. Код из двухбуквенных шифров тяжело читать.

→ Ссылка