2008-09-07 40 views
3

在Visual Studio引發錯誤2008在設計時設置DataGridView.DefaultCellStyle.NullValue爲null,在添加行運行

  • 添加新的DataGridView到窗體
  • 編輯列
  • 添加邁上了一個新DataGridViewImageColumn
  • 打開此列的CellStyle構建器(DefaultCellStyle屬性)
  • 將NullValue從System.Drawing.Bitmap更改爲null
  • 嘗試在運行時向DataGridView添加新行 (dataGridView1.Rows.Add();)
  • 您收到此錯誤:System.FormatException:格式化 單元格的值具有錯誤的類型。

如果您將NullValue更改爲System.Drawing.Bitmap(原樣),則在添加一行時仍會出現相同的錯誤。

如果在運行時而不是設計時設置NullValue,則不會收到anny錯誤。 (dataGridView1.Columns [0] .DefaultCellStyle.NullValue = null;)

你能告訴我爲什麼?

回答

2

這可能是設計師的一個錯誤;如果您查看.designer.cs文件(也許在將NullValue設置爲null之前和之後做一個diff),您應該能夠看到它生成的代碼。

1

Kronoz是對的。 在設計時將其添加到.designer.cs中:

dataGridViewCellStyle1.NullValue =「null」;

如果我修改「null」null那麼它工作正常。我用反射器檢查了DataGridViewCellStyle.NullValue的set_NullValue(Object)和get_NullValue,我認爲字符串值不應該在這裏引發任何錯誤。

無論如何要小心,如果你想設置它的設計時間,那麼不要忘記修改.design.cs。

1

Change the NullValue from System.Drawing.Bitmap to null

當您在設計器的NullValue字段中輸入'null'時,您將指定字符串值「null」。將NullValue設置爲非字符串值的唯一方法是通過編程或通過修改設計器代碼來設置它。

0

我發現它更好,如果你只是從設計師一起從格式區域和默認的空值區域刪除項目。然後它將其設置回真實的空值。我將嘗試將它設置在遠離設計器生成垃圾的init部分。

+0

這是yoda了,是通過設置: .DefaultCellStyle.DataSourceNullValue = CheckState.Unchecked; .DefaultCellStyle.NullValue = CheckState.Unchecked; 它讓我做我想做的事。 – 2010-01-25 05:45:36

1

複選框不能有一個字符串值。 不要在IDE屬性對話框中設置任何默認值。 我將「Empty」寫入了RowsDefaultCellStyle.Format屬性,導致了錯誤。 它是自己造成的。作爲一個修復,我試圖將複選框狀態設置爲取消選中,但我只需要刪除字符串值。