Всё ещё «Индекс за пределами диапазона»? Выдаёт ошибку пока непонятно с чем связанную. Данные в 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
Ошибка "Индекс за пределами диапазона" возникает, когда вы пытаетесь обратиться к ячейке DataGridView с индексом, который выходит за пределы доступного диапазона.
В вашем коде у вас есть цикл, который итерирует переменную x от 0 до 35 включительно. Внутри этого цикла вы обращаетесь к ячейкам DataGridView с индексами 5, x, 6, x, 7, x и 8, x.
Ошибка происходит, вероятно, потому что значение переменной x может выйти за пределы количества строк в DataGridView (если, например, количество строк в DataGridView меньше 36).
Рекомендуется перед обращением к ячейке DataGridView проверить, что индекс находится в пределах допустимого диапазона. Например, вы можете добавить проверку перед установкой значения ячейки в DataGridView:
Ошибка "Индекс за пределами диапазона" возникает, когда вы пытаетесь обратиться к ячейке 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.