我甚至沒有想法在哪裏尋找解決這個錯誤。 最近我得到以下異常,我點擊後在DataGridViewCheckBoxColumn
複選框進行檢查,並離開該細胞:DataGridViewCheckBoxColumn:布爾列上的FormatException
System.FormatException:「」不是有效的布爾
下面是完整的從DataGridView
錯誤對話框:
我甚至不知道我能勝任找到原因哪一個事件這個問題。 Validating
和CellFormatting
事件在錯誤發生之前觸發,但都通過。 如果我處理DataError
-事件我仍然無法弄清楚。該DataGridViewDataErrorEventArgs
參數包含以下信息(其中包括):
e.ColumnIndex = 0
e.RowIndex = 0
e.Context = Commit
完整的異常(e.Exception.ToString()
)是:
System.FormatException:不是布爾有效值。 ---> System.FormatException:String未被識別爲有效的布爾值。 在System.Boolean.Parse(字符串值) System.ComponentModel.BooleanConverter.ConvertFrom(ITypeDescriptorContext 上下文,CultureInfo的文化,對象的值)---內 異常堆棧跟蹤的末尾在 System.ComponentModel。 BooleanConverter.ConvertFrom(ITypeDescriptorContext 上下文,CultureInfo的文化,對象值) System.ComponentModel.TypeConverter.ConvertFrom(對象值) System.Windows.Forms.DataGridView.DataGridViewDataConnection.PushValue(的Int32 boundColumnIndex,的Int32 columnIndex,的Int32 rowIndex位置,對象值)
以下是有關列屬性的截圖,列有ThreeState=false
和FalseValue
沒有指定,TrueValue
或IndeterminateValue
:
的BindingSource
的數據源是一個List<ErpService.ArrivalChargeAssignment>
其中ArrivalChargeAssignment
是一類從我的WCF web服務與bool
-field IsAssigned
,所以它永遠不可能是null
(甚至是一個空字符串)。
我記得當我們的團隊在做一個遺留項目時發生這樣的錯誤(儘管不完全一樣)。事實證明,出現了某種競爭狀況 - 數據源正在被多個不同的線程改變/讀取,控制器不喜歡它。我們花了很多時間在上面,但無法弄清楚是什麼導致了它(鎖也沒有幫助)。我們最終放棄了WinForms並轉向WPF。可能不是你正在尋找的答案,但如果它是一個全新的項目,它將是值得的寫在WPF。 – PoweredByOrange 2014-11-05 15:47:08
每當DGV嘗試格式化指定數據類型格式的值時,我也會收到相同的錯誤。我無法解決這個問題。所以,我處理了'DataError'事件以避免這種異常。 – Shell 2014-11-06 04:36:03
@Nimesh:是的,也許我也會吞下這個異常,儘管如果我不知道原因,我不喜歡忽略異常。 – 2014-11-06 09:00:00