В dataGridView не получается вывести элементы массива C#
сообщество!
Я ещё студент и имею немного опыта в WinForms, нужно по заданию сгенерировать массив из N количества случайных чисел (одномерный массив) в элемент dataGridView. При попытке сгенерировать - выдаёт ошибку.
Скриншот окна, а так же код, который не выполняет задание ниже:

private void btn_mass_Click(object sender, EventArgs e)
{
Random random= new Random();
dataGridView1.AutoGenerateColumns = true;
int n = int.Parse(numericUpDown1.Text);
try
{
int[] M = new int[n];
for (int i = 0; i < n; i++)
{
M[i] = random.Next(1, 10);
dataGridView1[i, 10].Value = M[i].ToString();
}
}
catch (Exception)
{
string text = "Неизвестная ошибка!";
MessageBox.Show(
text,
"Отказано в доступе!", // заголовок
MessageBoxButtons.OK, // кнопка ок
MessageBoxIcon.Error,
MessageBoxDefaultButton.Button1,
MessageBoxOptions.DefaultDesktopOnly);
}
}
Ответы (2 шт):
При пошаговой отладке или попробовать убрать блок try catch, то видна ошибка: "Index was out of range. Must be non-negative and less than the size of the collection. Arg_ParamName_Name". Это говорит о том, что по данной строке/столбец не найдена ячейка. Т. е. вы пытались в столбец i на 10-ую строку вписать значение рандома.
Есть несколько вариантов ввода данных в DataGridView, но пожалуй вам подойдет такой:
1. Добавьте через конструктор столбец в DataGridView:
2. Внутри цикла добавить код для создания ячеек и строк:
for (int i = 0; i < n; i++)
{
M[i] = random.Next(1, 10);
DataGridViewCell cell = new DataGridViewTextBoxCell();
cell.Value = M[i];
DataGridViewRow row = new DataGridViewRow();
row.Cells.Add(cell);
dataGridView1.Rows.Add(row);
}
Update
Только сейчас понял, что сделал ответ на добавление строк. Моя ошибка :). Добавлю еще один пример, в этом случае добавление столбцов и данных на пустой DataGridView:Random random = new Random();
dataGridView1.AutoGenerateColumns = true;
int n = 25; // здесь значение от Input
int[] M = new int[n];
for (int i = 0; i < n; i++)
{
DataGridViewColumn column = new DataGridViewColumn();
column.CellTemplate = new DataGridViewTextBoxCell();
column.HeaderText = "Col" + (i + 1).ToString();
column.AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader;
dataGridView1.Columns.Add(column);
}
int rowIndex = dataGridView1.Rows.Add();
for (int i = 0; i < n; i++)
{
M[i] = random.Next(1, 10);
dataGridView1[i, rowIndex].Value = M[i].ToString();
}
Спасибо всем, кто пытался помочь, реализовал код так: (он работает)
Random random= new Random();
int n = Convert.ToInt32(numericUpDown1.Value);
dataGridView1.RowCount = 2;
dataGridView1.ColumnCount = n;
int[] M = new int[n];
for (int i = 0; i < n; i++)
{
M[i] = random.Next(1, 100);
dataGridView1[i, 0].Value = i;
dataGridView1[i, 1].Value = M[i].ToString();
}


