Это программа форм Windows. У меня есть несвязанный элемент управления DataGridView с четырьмя столбцами; Идентификатор функции как строка, Parts as string, Flats as string и ShowOnEst как boolean. Столбцы были определены в конструкторе форм, а булевский столбец действительно установлен как флажок с тристатом, установленным на false.Unbound DataGridView добавить строку с ошибкой флажка
Пользователь выбирает продукт из списка и этот код выполняется для заполнения сетки
grdFeat.Rows.Clear()
For i = 0 To curProduct.lstFeatures.Count - 1
With (curProduct.lstFeatures(i))
grdFeat.Rows.Add(.FeatureId, .Parts, .Flats, .ShowOnEst)
End With
Next
Если AllowUserToAddRows ложно, Everthing хорошо. Установка AllowUserToAddRows истинно, однако, приводит к следующей ошибке:
FormatException
Значение «» не может быть преобразовано в тип «Boolean».
Ошибка не активирована в моем коде. Он отображается в новой вкладке «Без источника».
Кажется довольно понятным, что процесс, который добавляет новую строку редактирования, пытается установить флажок в значение строки или, возможно, значение NULL. Я очень новый (несколько месяцев) на vb.net, поэтому я подозреваю, что где-то я пропустил какую-то простую настройку, но после нескольких часов попыток найти его, я начинаю чувствовать себя немного глупо.
Я бы дал вам список вещей, которые я уже пробовал, но он длинный. :) Я даже попытался обойти проблему, добавив новую строку вручную, .add ("", "", "", False), но это тоже дает ту же ошибку, хотя я говорю ей, что поставить в флажке.
Что мне не хватает? Кроме того, может ли кто-нибудь указать мне на объяснение того, как работает эта новая строка редактирования?
Вы обрабатываете событие DefaultValuesNeeded? – Graffito
Да, я добавил код для этого и CellValueNeeded точно так же, как эксперимент. Ошибка произошла до начала любого из событий. Мой смысл в документации состоит в том, что эти события полезны в виртуальном режиме, но стоило попробовать. Я тоже пытался включить виртуальный режим, но тот же. – JimmyTheGeek
Для целей идентификации проблемы вы можете попробовать еще раз предлагаемое обходное решение, то есть «установите AllowUserToAddRows в значение false перед заполнением DataGridView и установите значение true после», но вставьте «Application.DoEvents()» перед «grdFeat.AllowUserToAddRows = true», , Другое испытание: вместо DoEvents(), do grdFeat.Invalidate(). – Graffito