У меня есть DataGridView, привязанный к списку [частей]. Последний элемент в списке всегда является «фиктивной частью», которая предназначена для создания дополнительной строки в сетке, чтобы пользователь мог начать ввод в первую ячейку, чтобы добавить часть в список.
Как только пользователь вводит в эту конкретную ячейку более x символов, под ячейкой, в которой он печатает, появляется новый DataGridView с результатами поиска (немного посмотрим рекомендации Google), и он может выбрать одно из совпадений, чтобы добавить деталь к список.
Я делаю это, обрабатывая событие EditControlShowing, которое назначает «элемент управления для редактирования» переменной TextBox, которая имеет обработчик для TextChanged.
Ошибка:
Я хочу, чтобы фокус изменился на второй DataGridView (результаты поиска), если пользователь нажимает клавишу со стрелкой вниз.
Обработчик EditControlShowing в первый раз работает нормально, перемещая фокус на второй DataGridView и оставляя первый DataGridView в «кажущемся» функциональном состоянии, то есть все другие обработчики событий работают. Но во второй раз, когда запускается обработчик EditControlShowing, DataGridView генерирует исключение NullReferenceException для InitializeEditingControlValue.
Поскольку это собственный вызов DataGridView, который выдает ошибку, отладчик приводит меня к «Application.Run» в моем коде, который не помогает.
Однако я определил, что вызов, который заставляет DataGridView перейти в это состояние, и точка, в которой генерируется исключение, - это когда я краду фокус из первого DataGridView, вызывая Focus () для второго DataGridView (или любого другого элемента управления для это важно).
Однако если я позволю пользователю изменить фокус на DataGridView (например, щелкнув мышью), то DataGridView останется в порядке.
Кто-нибудь знает, почему кража фокуса от DataGridView во время обработчика для EditControlShowing должна привести к тому, что впоследствии он будет вести себя по-другому?
Я пробовал CancelEdit, Refresh, Enable / Disable и т.д ...
Любые предложения, которые помогут мне выяснить, что происходит в DataGridView? Я не могу обнаружить ничего очевидного, осматривая его на контрольных точках до и после. Я даже не знаю, как узнать, какой объект является нулевым, как его собственный код DataGridView ...
Большое спасибо.