.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
}
}