C # Конвертировать Double в строку из DataGridView - PullRequest
1 голос
/ 03 апреля 2019

При нажатии моей кнопки появляется следующая ошибка, когда заменяемое значение представляет собой только число (например, 40) и заменяется строкой (например, AB123).

System.Exception: AB123 не является допустимым значением для Double. --->

System.FormatException: входная строка была в неправильном формате.

в System.Number.ParseDouble (строковое значение, параметры NumberStyles, NumberFormatInfo numfmt)

Нажатие кнопки:

    private void button2_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < dataGridView1.RowCount; i++)
        {
            if (!RowIsEmpty(i))
            {
                dataGridView1[3, i].Value = Combo.Text;
            }
        }
    }

Я попытался неявно преобразовать это так:

dataGridView1[3, i].Value.ToString() = Combo.Text;

Но это не сработало, я также пытался назвать это как строку:

    private void button2_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < dataGridView1.RowCount; i++)
        {
            if (!RowIsEmpty(i))
            {
                string DGVS = dataGridView1[3, i].Value.ToString();
                DGVS =  Combo.Text;
            }
        }
    }

Но это не дает ошибки, но на самом деле ничего не делает.

Данные загружаются из файла Excel.

* +1025 * Пример
Col1  Col2  Col3
AAA   BBB   40

ComboBox:

ABC123

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Хорошо, я думаю, я нашел решение:

double price;
bool isDouble = Double.TryParse(textBox1.Text, out price);
if (isDouble)
{
     Convert.ToDouble(textBox1.Text);
     dataGridView1[0, 0].Value = textBox1.Text;
}
else
{
     dataGridView1[0, 0].Value = textBox1.Text;
}

По сути, сначала проверьте, является ли текстовое поле двойным или нет.Если двойная, конвертировать в двойную и добавить его в DGV.Если это строка, просто добавьте строку в DGV.

Тесты:

TextBox1.Text = AAA; //worked
TextBox1.Text = BBB; //worked
TextBox1.Text = 40; //worked
TextBox1.Text = 40.00; //worked
TextBox1.Text = 42,20; //worked
0 голосов
/ 04 апреля 2019

Я решил это (возможно, не лучшим образом, но это работает), удалив и повторно добавив столбец после загрузки в сетку данных, но до обновления значения комбинированного списка в строках.

private void button2_Click(object sender, EventArgs e)
{
    DataGridViewTextBoxColumn Column3New = new DataGridViewTextBoxColumn();
    Column3New.Name = "Column3";
    Column3New.HeaderText = "Column3";
    dataGridView1.Columns.RemoveAt(3);
    dataGridView1.Columns.Insert(3, Column3New);
    for (int i = 0; i < dataGridView1.RowCount; i++)
    {
        if (!RowIsEmpty(i))
        {
            dataGridView1[3, i].Value = Combo.Text;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...