.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 } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д