Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
2 / 2 / 3
Регистрация: 18.01.2018
Сообщений: 29

System.ArgumentOutOfRangeException: Индекс за пределами диапазона (передача данных в DataGridView)

14.10.2020, 08:51. Показов 1489. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте!

В целях практики разбираю задачу по взаимодействию форм - передаче данных из одной формы в другую.
В первой форме у меня имеется DataGridView, а во второй - два TextBox, значения из которых должны передаться в соответствующие ячейки таблицы DataGridView. В дальнейшем планируется передача значений из ячеек строки таблицы, по которой будет произведён двойной щелчок.

При изучении был проштудирован раздел "Ответы на 7 самых частых вопросов по WinForms", но работа с DataGridView при взаимодействии форм там, к сожалению, не приведена.

Вторая форма вызывается нажатием кнопочки, при этой в таблице DataGridView создаётся новая строка. Это видно при отладке.

Как промежуточное звено был создан публичный статический класс со свойствами, которые принимают и передают значения из одной формы в другую. Также параметр Modifiers таблицы DataGridView переведён в значение Public.

Поскольку, как я понял, для обращения к таблице DataGridView первой формы необходимо создать объёкт этой формы, то в коде второй формы я написал:

C#
1
Form1 form1 = new Form1();
Передача цифровых значений из TextBox второй формы в таблицу DataGridView первой формы должна осуществляться при нажатии на кнопку, расположенную на второй форме. Соответственно в обработчике этого события я написал:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private void AcceptButton_Click(object sender, EventArgs e)
        {
            string[] words = this.Text.Split(' ');
            int i = Convert.ToInt32(words[1]) - 1; // Попытка получения индекса строки, в ячейки которой будут записываться значения из второй формы.
            Rectangle.Number = i.ToString();
 
            //Передача значений в промежуточный класс  Rectangle
            Rectangle.LenghtA = LenghtAtextBox.Text; 
            Rectangle.LenghtB = LenghtBtextBox.Text;
            Rectangle.Square = (Convert.ToDouble(LenghtAtextBox.Text) * Convert.ToDouble(LenghtAtextBox.Text)).ToString();
 
            //Попытка передачи данных в первую Форму с таблицей DataGridView
 
            //int i = dataGridView1.CurrentRow.Index;
 
            form1.dataGridView1["SideA", i].Value = Rectangle.LenghtA;
            form1.dataGridView1["SideB", i].Value = Rectangle.LenghtB;
            //form1.dataGridView1.Rows[1].Cells[0].Value = Rectangle.LenghtA;
            //form1.dataGridView1.Rows[2].Cells[0].Value = Rectangle.LenghtB;
 
            form1.dataGridView1["RectangleSquare", i].Value = Rectangle.Square;
 
            this.Close(); //Закрывает форму для ввода длин сторон прямоугольника
        }
К ячейкам пытался обратиться, как используя имена столбцов, так и индексом строк (хотя бы для одной).

При отладке в месте обращения к таблице DataGridView первой формы выскакивает ошибка:
System.ArgumentOutOfRangeException: "Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции. Имя параметра: index"

Помогите, пожалуйста, решить возникшую проблему!
Архив с проектом - во вложении.
Вложения
Тип файла: zip Проект.zip (447.3 Кб, 0 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.10.2020, 08:51
Ответы с готовыми решениями:

System.ArgumentOutOfRangeException: Индекс за пределами диапазона
После отладки всё работает нормально, когда же запускаю .exe выдает ошибку!

Индекс за пределами диапазона DataGridView
Всем привет! Возникла такая проблема. Компилирую код и вылазит исключение "System.ArgumentOutOfRangeException" в mscorlib.dll Вот...

Datagridview индекс за пределами диапазона
Здравствуйте, Уважаемые Программисты! Нужна ваша помощь. В первом датагриде считаны данные из Excel, считаются их квадраты и сумма этих...

1
2 / 2 / 3
Регистрация: 18.01.2018
Сообщений: 29
23.10.2020, 14:42  [ТС]
Здравствуйте!

Спасибо вам за ценные советы!

Ниже прилагаю архив с проектом, в котором возникшая у меня проблема решена.
Вложения
Тип файла: zip Проект.zip (64.0 Кб, 6 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2020, 14:42
Помогаю со студенческими работами здесь

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

System.ArgumentOutOfRangeException: Индекс за пределами диапазона
Добрый вечер, столкнулся с такой проблемой, при попытке отсортировать данный в dataGridView1 выдает ошибку...

System.ArgumentOutOfRangeException: Индекс за пределами диапазона
Здравствуйте, сегодня столкнулся с проблемой, что после добавления "Process.Start("это же приложение");" Приложение...

Datagridview Индекс за пределами диапазона
Помогите разобраться при нажатии datagridview1 на "имя" столбца выдает ошибку "Индекс за пределами диапазона, индекс должен быть...

Индекс за пределами диапазона. DataGridView
Здравствуйте! В общем суть такая, я ввожу в датагрид данные. а теперь по нажатию кнопки хочу получить эти введенные значения в массив. На...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru