Считывание данных с datagridview из нужного столбца

Как считать данные из datagridvew из нужного столбца (например 3) и записать в массив чисел. Сделал что-то такое, но не работает Cells

int[] mas = new int[dataGridView1.RowCount];
            int i = 0;
            foreach (var row in dataGridView1.Rows)
                mas[i++] = row.Cells[3].Value;

Ответы (1 шт):

Автор решения: Frehzy
internal class RowHelper<T>
{
    private readonly DataGridView _dgv;

    public int? RowIndex { get; private set; }

    public int? ColumnIndex { get; private set; }

    public T Value { get; private set; }

    public RowHelper(DataGridView dgv) =>
        _dgv = dgv;

    public T GetValueByColumnName(string columnName)
    {
        RowIndex = _dgv.CurrentCell?.RowIndex;
        if (RowIndex is null)
            throw new NullReferenceException("Должна быть выделена хотя-бы одна строка.");

        ColumnIndex = DataGridHelper.GetIndexByName(_dgv, columnName);
        if (ColumnIndex is null)
            throw new NullReferenceException($"Не был найден столбец с именем {columnName}");

        return (T)Convert.ChangeType(_dgv.Rows[(int)RowIndex].Cells[(int)ColumnIndex].Value, typeof(T));
    }
}

Использовать:

var result = new RowHelper(dgv).GetValueByColumnName("*ColumnName*");

Возвращает значение с выделенной строки.

Конечно, ЛУЧШЕ использовать привязку данных (погугли BindingSource), но, если слишком лень, то можно воспользоваться такой реализацией

→ Ссылка