Всё ещё «Индекс за пределами диапазона»? Выдаёт ошибку пока непонятно с чем связанную.
Данные в dgv кладутся из базы access. Сначала подумал, что это может быть связано с тем, что 5 столбец у dgv на момент попытки занесения в него данных попросту не определён (хз определяется ли автоматом).
В итоге из-за сложностей переноса базы из access вместо определения количества столбцов решил добавить их в файл БД.
Всё ещё не помогло.
В чём может быть проблема?for (int x = 0; x < 36; x++)
{
switch (x / 3)
{
case 0:
{
mas[x, 0] = mas[x, 0] * k1 * k11;
mas[x, 1] = mas[x, 1] * k1 * k11;
mas[x, 2] = mas[x, 2] * k1 * k11;
mas[x, 3] = mas[x, 3] * k1 * k11;
dataGridView1[5, x].Value = mas[x, 0]; //на этой строчке выдаёт ошибку
dataGridView1[6, x].Value = mas[x, 1];
dataGridView1[7, x].Value = mas[x, 2];
dataGridView1[8, x].Value = mas[x, 3];
break;
}Подробности
System.ArgumentOutOfRangeException
HResult=0x80131502
Сообщение = Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index
Источник = mscorlib
Трассировка стека:
в System.Collections.ArrayList.get_Item(Int32 index)
в System.Windows.Forms.DataGridViewCellCollection.get_Item(Int32 index)
в System.Windows.Forms.DataGridView.get_Item(Int32 columnIndex, Int32 rowIndex)
в Diplom.Form1.Button1_Click(Object sender, EventArgs e) в C:\Users\Vladimir\source\repos\Diplom1\Diplom\Form1.cs:строка 295
в System.Windows.Forms.Control.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ButtonBase.WndProc(Message& m)
в System.Windows.Forms.Button.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
в System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
в System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.Run(Form mainForm)
в Diplom.Program.Main() в C:\Users\Vladimir\source\repos\Diplom1\Diplom\Program.cs:строка 19

21 Авг 2019 в 06:58
228 +2
0
Ответы
1

Ошибка "Индекс за пределами диапазона" возникает, когда вы пытаетесь обратиться к ячейке DataGridView с индексом, который выходит за пределы доступного диапазона.

В вашем коде у вас есть цикл, который итерирует переменную x от 0 до 35 включительно. Внутри этого цикла вы обращаетесь к ячейкам DataGridView с индексами 5, x, 6, x, 7, x и 8, x.

Ошибка происходит, вероятно, потому что значение переменной x может выйти за пределы количества строк в DataGridView (если, например, количество строк в DataGridView меньше 36).

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

if (x < dataGridView1.Rows.Count)
{
dataGridView1[5, x].Value = mas[x, 0];
dataGridView1[6, x].Value = mas[x, 1];
dataGridView1[7, x].Value = mas[x, 2];
dataGridView1[8, x].Value = mas[x, 3];
}

Таким образом, вы будете устанавливать значения только в случае, если индекс x находится в пределах количества строк в DataGridView.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 541 автору
Первые отклики появятся уже в течение 10 минут
Прямой эфир