Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Abatur
0 / 0 / 0
Регистрация: 17.09.2014
Сообщений: 18

Срабатывает System.NullRaferenceException при попытке изменить данные в Datagridview.ComboboxColumn

12.06.2024, 12:39. Показов 434. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте! Проблема заключается в том, что повторное нажатие на comboboxcolumn приводит к возникновению исключения NullReferenceException в файле Program.cs на этапе Application.Run. Вводные данные следующие:
1. имеется приложение Windows Form и на форме DatagridView, связанная с базой данных sql server;
2. Одна из колонок DatagridView представляет из себя ComboboxColumn, но я работаю с ней как с обычным Combobox. Преобразование выполнила при помощи события EditingControlShowing, затем создала несколько событий уже для combobox:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private void dgrv1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
   var cb = e.Control as DataGridViewComboBoxEditingControl;
   cb.SelectedIndexChanged -= this.cb_SelectedIndexChanged;
   cb.SelectedIndexChanged += this.cb_SelectedIndexChanged;
   cb.DropDown -= this.cb_DropDown;
   cb.DropDown += this.cb_DropDown;
   cb.DropDownClosed -= this.cb_DropDownClosed;
   cb.DropDownClosed += this.cb_DropDownClosed;
}
 
private void cb_DropDown (object sender, EventArgs e)
{ var cb = sender as DataGridViewComboBoxEditingControl;
   string text = cb.text; }
private void cb_SelectedIndexChanged(object sender, EventArgs e)
{ var cb = sender as DataGridViewComboBoxEditingControl;
   int ind = cb.SelectedIndex; 
   dgrv1.CommitEdit(DataGridViewDataErrorContexts.Commit);
   dgrv1.EndEdit;}
private void cb_DropDownClosed(object sender, EventArgs e)
{ var cb = sender as DataGridViewComboBoxEditingControl;
   dgrv1.EndEdit; }
3. Исключение возникает только при том условии, что срабатывает событие EditingControlShowing. Если его не включать, то все ОК, значит, проблема в нем.
Ошибка возникает только при повторном нажатии на Comboboxcolumn, то есть при первом нажатии и выборе значения из выпадающего списка (либо при нажатии в любое другое место, то есть закрытии выпадающего списка без выбора) все события срабатываю корректно, а вот когда второй раз нажимаешь в той же строке или в любой другой на Comboboxcolumn - ошибка.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.06.2024, 12:39
Ответы с готовыми решениями:

System.InvalidOperationException при попытке сохранить данные
Доброго времени суток! Вот у меня такой код. if (creditRent.mast_be_pay_credit >= payCount) { ...

Ошибка при попытке сохранить введенные данные из datagridview в mysql
Выбивает ошибку System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта." dataSet было null. на 59 строку....

При попытке изменить данные в таблице Access появляется ошибка
Создал приложение для работы с базой данных При попытке изменить данные в таблице появляется ошибка, но когда закрываешь приложение все...

2
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,101
13.06.2024, 11:56
C#
1
2
3
4
5
6
7
private void cb_DropDown (object sender, EventArgs e)
{ 
 if(sender is DataGridViewComboBoxEditingControl cb)
   {
      string text = cb.text; 
   }
}
и так далее
0
 Аватар для Abatur
0 / 0 / 0
Регистрация: 17.09.2014
Сообщений: 18
13.06.2024, 20:32  [ТС]
Оказалось, что проблема в лишнем методе EndEdit в событии SelectedIndexChanged. Он там не нужен, т. к. завершение редактирования происходит по событию DropDownClosed, а если мы завершаем редактирование одной и той же ячейки два раза, то методы конфликтуют.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.06.2024, 20:32
Помогаю со студенческими работами здесь

ComboBoxColumn в DataGridView
Всем привет, как выбирать элемент в ComboBoxColumn? В обычном ComboBox это было SelectItem, а в ComboBoxColumn как?

"Приведение типа "|DBNull" к типу "String" при попытке загрузить данные из ячейки DataGridView в ComboBox
Доброго времени суток! Сама ошибка "Приведение типа "|DBNull" к типу "String" является недопустимым." Строка: ...

Ошибка при попытке using System.Linq;
Почему в некоторых решениях при подключении System.Linq; выдается сообщение: В то время как в других решениях работает нормально. Даже...

[OLE DB] Добавление ComboBoxColumn через адаптер и источник данных в dataGridView
Сразу извиняюсь, если пишу не туда, не изучаю, просто возникла потребность в этом) У меня есть БД, в ней есть две таблицы: 1)...

Ошибка "Исключение в DataGridView" при попытке добавить таблицу в DataGridView. Значения по умолчанию новой строки
Вероятностно у меня где-то ошибка в присвоении заголовкам таблицы типов данных. using System; using System.Collections.Generic; ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
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 и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru