Не записываются значения из dataGridView в созданный List

Рейтинг: 0Ответов: 1Опубликовано: 19.04.2023

Создал List и цыкл чтобы из dataGrid только по вертикали записало в list - но не могу исбавиться от ошибок, сделал уже 2 версии кода

1)

List <double> listOfTrad = new List<double>();
    for (int a = 0; a < dataGridView1.Rows.Count; a++)
    {
        listOfTrad.Add((double)dataGridView1[1, a].Value);
    }
List<int> listOfTrad = new List<int>();
    for (int i = 0; i < dataGridView1.RowCount; i++)
    {
        listOfTrad[i] = (int)dataGridView1[0, i].Value;
    }

введите сюда описание изображения

Ответы

▲ 1Принят

Один из вариантов это использовать класс Convert. Например:

var _listOfTrad = new List<Double>();

for (int a = 0; a < dataGridView1.Rows.Count - 1; a++)
{
     _listOfTrad.Add(Convert.ToDouble(dataGridView1[0, a].Value));
}

Второй вариант заключается в хранении строк вместо чисел. Например:

var _listOfTrad = new List<string>();

for (int a = 0; a < dataGridView1.Rows.Count - 1; a++)
{
     _listOfTrad.Add((string)dataGridView1[0, a].Value);
}

Значение Value DGV имеет тип object, а вводимые данные имеют строковый тип и упаковываются в этот object. Распаковка возможна только в тот тип, который был у переменной до запаковки, поэтому явное приведение к string будет работать, а к другим типам нет. Подробнее про распаковку/запаковку можно почитать здесь https://learn.microsoft.com/ru-ru/dotnet/csharp/programming-guide/types/boxing-and-unboxing