Как из datagridview считать значения в одномерный массив?

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

Здесь я создал массив, и сделал цикл for чтобы считать строки чисел который пользователь ввел в DataGridView и сохранить в массив

private void button1_Click(object sender, EventArgs e)
{
    double[] Main = {};
            
    for (int i = 0; i < dataGridView1.RowCount; i++)
    {
        Main[i] = Convert.ToDouble(dataGridView1.Rows[i].Value;
    }
}

Ответы

▲ 0

Значения в DatagridView хранятся в табличном виде. Чтобы считать значение из ячейки, нужно обратиться к ней напрямую

        int i = 0;
        int j = 0;
        //инициализация массива
        var Main = new double[dataGridView1.Rows.Count][];
        //проходим по строкам
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            Main[i] = new double[row.Cells.Count];
            //проход по столбцам строки
            foreach (DataGridViewCell cell in row.Cells)
            {
                //проверяем, последняя строка у DGV пустая
                if (cell.Value != null)
                {
                    Main[i][j] = double.Parse(cell.Value.ToString());
                    j++;
                }
            }
            i++;
        }

Также нужно сделать проверку, что пользователь вводит именно числа, но это вы уже сможете сами (например методом TryParse) Добавил инициализацию массива и индексы для понятного итерирования.

Ну и для вывода всего массива в тест, его нужно преобразовать в строку. Например так:

            string[] strArray = new string[Main.Count()];
            for (int i = 0; i < Main.Count(); i++)
            {
                strArray[i] = string.Join(", ", Main[i]);
            }