@Anatoliy5354

Как исправить ошибку в простенькой програмке на C#?

Необходимо сделать программку-калькулятор на C# в Windows form. Программа содержит текст "Введите значение", после чего вводится значение в поле
Затем после нажатия кнопки "посчитать", нужно что бы выводилось значение посчитанное по формуле.
Программу почти написал, но при попытке ввода любого значения в textBox1, возле строки x1 = Double.Parse(x); - образуется ошибка "System.ArgumentNullException: Значение не может быть неопределенным.
Имя параметра: value"
Возможно сама программа полностью неверна, но это лишь 2 вторая пара по програмированнию и завтра нужно строчно здать, прошу пожалуйста помочь. Заранее благодарен!

Кож ниже и скрин

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 WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        double x1;
        double y;
        string x;
       public Form1()
        {
            InitializeComponent();
        }

        
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
             x = Console.ReadLine();
             x1 = Double.Parse(x);

        }
        
        private void button1_Click(object sender, EventArgs e)
        {
            double x2;
            x2 = x1 * 3;

            y = Math.Pow(Math.Cos(Math.Exp((x1 + 2 * x2 + 9) / 0.666)), 3);
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            textBox2.Text = y.ToString();
        }
    }
}

5bb280ac21632816132196.jpeg
  • Вопрос задан
  • 2039 просмотров
Пригласить эксперта
Ответы на вопрос 2
@tex0

x = Console.ReadLine();


вы пытаетесь в оконном приложении получить доступ к окружению консоли windows :-)
вам надо сделать так:
private void textBox1_TextChanged(object sender, EventArgs e)
        {
            var textBox = sender as TextBox;
            if (textBox == null) return; //или обрабатывайте по своему данную ситуацию
            if (!Double.TryParse(textBox.Text, out x1) return; //или обрабатывайте по своему данную ситуацию, например выводите сообщение о том что формат ввода не верен
        }
Ответ написан
Комментировать
@MaximIs
Я бы так написал
double x1 = Convert.ToDouble(textBox1.Text);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы