Не записываются значения из dataGridView в созданный List
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 шт):
Автор решения: Nikita
→ Ссылка
Один из вариантов это использовать класс 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

