Установка для DataGridView.DefaultCellStyle.NullValue значения null во время разработки вызывает ошибку при добавлении строк во время выполнения.

StackOverflow https://stackoverflow.com/questions/48271

  •  09-06-2019
  •  | 
  •  

Вопрос

В Visual Studio 2008

  • добавить новый DataGridView в форму
  • Редактировать столбцы
  • Добавьте новый DataGridViewImageColumn.
  • Откройте CellStyle Builder этого столбца (свойство DefaultCellStyle).
  • Измените NullValue с System.Drawing.Bitmap на null.
  • Попробуйте добавить новую строку в DataGridView At Runtime (DataGridView1.Rows.Add ();)
  • Вы получаете эту ошибку:Системное исключение:Форматированное значение ячейки имеет неправильный тип.

Если вы вернете NullValue на System.Drawing.Bitmap (как было), вы все равно получите ту же ошибку при добавлении строки.

Если вы установите NullValue во время выполнения, а не во время разработки, вы не получите никакой ошибки.(dataGridView1.Columns[0].DefaultCellStyle.NullValue = null;)

Не могли бы вы сказать мне, почему это так?

Это было полезно?

Решение

Это вполне может быть ошибка в дизайнере;если вы посмотрите на файл .designer.cs (возможно, сделаете разницу до и после того, как вы установили для NullValue значение null), вы сможете увидеть код, который он генерирует.

Другие советы

Кроноз прав.После установки во время разработки он добавляет это в .designer.cs:

dataGridViewCellStyle1.NullValue = «ноль»;

Если я изменю "нулевой" к нулевой тогда все работает нормально.Я проверил DataGridViewCellStyle.NullValue set_NullValue(Object) и get_NullValue с помощью рефлектора, и я думаю, что строковое значение не должно вызывать здесь никаких ошибок.

В любом случае будьте осторожны с этим, и если вы хотите установить время разработки, не забудьте изменить .design.cs.

Измените NullValue с System.Drawing.Bitmap на null.

Когда вы вводите значение «null» в поле NullValue в конструкторе, вы указываете строковое значение «null».Единственный способ установить NullValue в нестроковое значение — установить его программно или самостоятельно изменить код дизайнера.

Флажок не может иметь строковое значение.Не устанавливайте никаких значений по умолчанию в диалоговом окне свойств IDE.В свойстве RowsDefaultCellStyle.Format было записано «Пусто», и это вызвало ошибку.Это было сделано самому.В качестве исправления я пытался установить флажок не отмеченным, но мне просто нужно было удалить строковое значение.

Я обнаружил, что лучше просто удалить элемент из конструктора целиком из области «Формат» и области нулевых значений по умолчанию.Затем он возвращает его к реальному нулю.Я попробую установить его в разделе инициализации, подальше от всякой ерунды, созданной дизайнером.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top