.NET 4.x Convert.ToDouble: Входная строка имела неверный формат - C#

Узнай цену своей работы

Формулировка задачи:

Не понимаю в чем тут дело, в цикле работает, а на if (Convert.ToDouble(dgv.Rows[y].Cells[2].Value) < 0) выдает ошибку Входная строка имела неверный формат
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;
using System.IO;
using Microsoft.Office.Interop;
using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
 
namespace otchet
{
    public partial class Form1 : Form
    {
        double pr;
        string cel, datta, km = "0";
 
        public Form1()
        {
            InitializeComponent();
            
        }

        Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();

        public void добавитьСтрокуToolStripMenuItem_Click(object sender, EventArgs e)
        {
           
            pr = Convert.ToDouble(textBox1.Text);
            textBox1.Text = "";
            cel = textBox2.Text;
            textBox2.Text = "";
            datta = Convert.ToString(dtp.Value);

            dgv.Rows.Add(cel, datta, pr);
 
        }
 
        private void рассчитатьToolStripMenuItem_Click(object sender, EventArgs e)
        {
 
            double x = 0, prihod= 0, rashod =0;
            int m = 0, y = 1;
            string rc = "";
            dgv.Rows.Add(cel, cel, " ");
             
            while (dgv.Rows[y].Cells[2].Value != " ")
            {
                x = Convert.ToDouble(dgv.Rows[y].Cells[2].Value) + x;
                y = y + 1;
                 if (Convert.ToDouble(dgv.Rows[y].Cells[2].Value) < 0)
                 {
                     rashod = rashod + 1;
                 }
                 else
                 {
                     prihod = prihod + 1;
                 }

            }
            dgv.Rows.Add("", "Приход:", prihod + " " + "рублей");
            dgv.Rows.Add("", "Расход:", rashod + " " + "рублей");
            dgv.Rows.Add("", "Итог:", x + " " + "рублей");
            x = 0;
            y = 0;
 
       }
 
        private void очиститьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            dgv.Rows.Clear();
        }
 
        private void сохранитьВExcelToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ExcelApp.Application.Workbooks.Add(Type.Missing);
 
            for (int i = 0; i < dgv.ColumnCount; i++)
            {
                for (int j = 0; j < dgv.RowCount; j++)
                {
                    ExcelApp.Cells[j+1, i + 1] = (dgv[i, j].Value).ToString();
                }
            }
            ExcelApp.Visible = true;
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            dgv.Rows.Add("Цель", "Дата", "Сумма");
        }
    }
}

Решение задачи: «.NET 4.x Convert.ToDouble: Входная строка имела неверный формат»

textual
Листинг программы
 //здесь вы делаете проверку или значение с ячейки соответствует числовому значению
   while (dgv.Rows[y].Cells[2].Value != " ")
            {
                //здесь получили значение
                x = Convert.ToDouble(dgv.Rows[y].Cells[2].Value) + x;
                 
                 //а здесь увеличили индекс строки.           
                 y = y + 1; 
 
                 //здесь вы не делаете проверку if(dgv.Rows[y].Cells[2].Value != " ")
                 //соответсвенно можете получить значение, которое не является числовым и хотите его конвертировать 
                 //поэтому у вас ошибка, что строка имела неверный формат
                 if (Convert.ToDouble(dgv.Rows[y].Cells[2].Value) < 0)
                 {
                    //some data
                 }
           }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.462 из 5
Похожие ответы