数据绑定异常无法将值格式化为难以调试的所需类型

时间:2012-03-27 07:15:10

标签: .net winforms exception data-binding devexpress

我们在winforms应用程序中使用了大量的数据绑定,最近我们遇到了一些难以调试的场景。

在我们的BindingSource上调用ResumeBinding()时,我们收到一个异常:

  

ex.Type FormatException       ex.Message无法将值格式化为所需类型:

     

在System.Windows.Forms.Binding.FormatObject(对象值)       在System.Windows.Forms.Binding.PullData(布尔重新格式,布尔力)       在System.Windows.Forms.BindingManagerBase.PullData(布尔和成功)       在System.Windows.Forms.CurrencyManager.CurrencyManager_PullData()       在System.Windows.Forms.CurrencyManager.EndCurrentEdit()       at System.Windows.Forms.CurrencyManager.ChangeRecordState(Int32 newPosition,Boolean validating,Boolean endCurrentEdit,Boolean firePositionChange,Boolean pullData)       在System.Windows.Forms.CurrencyManager.UpdateIsBinding(Boolean raiseItemChangedEvent)       在System.Windows.Forms.CurrencyManager.UpdateIsBinding()       在System.Windows.Forms.CurrencyManager.ResumeBinding()       在System.Windows.Forms.BindingSource.ResumeBinding()       at SomeProject.SomePanel.FlightData_DataReady()in C:\ SomeDir \ SomePanel.cs:line 94

我们正在使用具有一些Nullable属性的简单对象模型。虽然不是所有人都试图捕捉二传手/吸气鬼

我们正在使用DevExpress组件,在将属性更改为Nullable属性并将NullText属性添加到DevExpress文本框之后,就会启动此特殊异常。

任何人都可以了解如何调试这种情况吗?


在解决这个问题后,我注意到一些细节造成了这个问题。

其中一个Nullable双属性被绑定到具有Single属性的控件。数据绑定引擎抛出了一些关于无法将Nullable double转换为Single的第一个更改异常。

调试这个并找出哪个控件/属性应该被责备仍然是不可能的,任何人都有一些线索如何做到这一点?

1 个答案:

答案 0 :(得分:13)

尝试启用格式化

this.myTextBox1.DataBindings.Add(new System.Windows.Forms.Binding("EditValue", this.bindingSource1, "MyProperty", true));

注意真实参数

将此属性设置为true还会启用错误处理行为,并导致引发BindingComplete事件。通过检查BindingCompleteEventArgs参数的BindingCompleteState属性,此事件的处理程序可以根据绑定过程中的成功,错误或异常采取适当的操作。

http://msdn.microsoft.com/en-us/library/system.windows.forms.binding.formattingenabled.aspx