Если для DataGridView.DefaultCellStyle.NullValue задано значение NULL во время разработки, возникает ошибка при добавлении строк во время выполнения - PullRequest
3 голосов
/ 07 сентября 2008

В Visual Studio 2008

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

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

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

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

Ответы [ 5 ]

2 голосов
/ 07 сентября 2008

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

1 голос
/ 20 августа 2011

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

1 голос
/ 28 ноября 2008

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

Когда вы вводите 'null' в поле для NullValue в Designer, вы указываете строковое значение "null". Единственный способ установить для NullValue нестроковое значение - это установить его программно или изменить код конструктора самостоятельно.

1 голос
/ 07 сентября 2008

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

dataGridViewCellStyle1.NullValue = "null";

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

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

0 голосов
/ 25 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...