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

.net 数据绑定异常无法将值格式化为难以调试的所需类型,.net,winforms,exception,data-binding,devexpress,.net,Winforms,Exception,Data Binding,Devexpress,我们在winforms应用程序中使用了大量数据绑定,最近我们遇到了一些难以调试的场景 在BindingSource上调用ResumeBinding时,我们收到一个异常: 例如,类型格式化异常 例如,消息无法将值格式化为所需类型: 在System.Windows.Forms.Binding.FormatObjectObject值处 在System.Windows.Forms.Binding.PullDataBoolean重新格式化中,布尔值强制 在System.Windows.Forms.Bind

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

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

例如,类型格式化异常 例如,消息无法将值格式化为所需类型:

在System.Windows.Forms.Binding.FormatObjectObject值处 在System.Windows.Forms.Binding.PullDataBoolean重新格式化中,布尔值强制 在System.Windows.Forms.BindingManagerBase.PullDataBoolean和success 位于System.Windows.Forms.CurrencyManager.CurrencyManager\u PullData 位于System.Windows.Forms.CurrencyManager.EndCurrentEdit 在System.Windows.Forms.CurrencyManager.ChangeRecordStateInt32 newPosition、布尔验证、布尔endCurrentEdit、布尔firePositionChange、布尔pullData 位于System.Windows.Forms.CurrencyManager.UpdatesBindingBoolean raiseItemChangedEvent 位于System.Windows.Forms.CurrencyManager.UpdatesBinding 位于System.Windows.Forms.CurrencyManager.ResumeBinding 位于System.Windows.Forms.BindingSource.ResumeBinding 在C:\SomeDir\SomePanel.cs中的SomeProject.SomePanel.FlightData\u DataReady中:第94行

我们使用的是一个简单的对象模型,具有一些可为空的属性。不过,并不是所有人都在二传手/接球手周围尝试接球

我们使用的是DevExpress组件,在将属性更改为可为null的属性并将null文本属性添加到DevExpress文本框后,此特定异常开始

有人能告诉我们如何调试这种情况吗

在进一步研究这个问题之后,我注意到了造成这个问题的一些细节

其中一个可为null的双属性绑定到具有单个属性的控件。数据绑定引擎引发了一些关于无法将可为null的双精度转换为单精度的首次更改异常


调试此操作并找出是哪个控件/属性造成的仍然是不可能的,任何人都知道如何执行此操作吗?

尝试启用格式设置

this.myTextBox1.DataBindings.Add(new System.Windows.Forms.Binding("EditValue", this.bindingSource1, "MyProperty", true));
请注意true参数

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


尝试启用格式化

this.myTextBox1.DataBindings.Add(new System.Windows.Forms.Binding("EditValue", this.bindingSource1, "MyProperty", true));
请注意true参数

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


如何设置网格的数据源,在其中存储什么类型的对象,当您将文本框/字符串绑定到文本框时,为什么要将其设置为可空?如果您发布了一些代码,这会有所帮助:包含可空属性的类和带有数据绑定的表单。@Martin,从探索的角度来看,这不应该真正帮助我调试代码。我不知道哪个数据绑定控件/代码是罪魁祸首,哪些属性是罪魁祸首。如何设置网格的数据源,在其中存储什么类型的对象,当您将文本框/字符串绑定到文本框时,为什么要将其设置为可空?如果您发布了一些代码,这会有所帮助:包含可空属性的类和带有数据绑定的表单。@Martin,从探索的角度来看,这不应该真正帮助我调试代码。我不知道哪个数据绑定控件/代码是罪魁祸首,哪些属性是罪魁祸首。感谢大家的提醒,但是我们有很多数据绑定,我正在尝试决定哪一个需要属性集/到底发生了什么。我没有足够的声誉来否决这个答案。你没有回答这个问题。我有和OP一样的问题。我有一个有几十个数据绑定字段的表单。突然,我发现了这个问题,我无法判断哪个领域失败了。问题是如何确定哪个字段失败。这是一个可怕的错误信息。异常的堆栈跟踪不包含有用的上下文?也许你应该花点时间阅读MSDN的文章。它包括一部分关于错误处理的内容,这可能是由于true参数造成的。@Dan-不小心将我的回答留给了您。由于当时与DevExpress控件相关,建议的答案没有帮助。问题是,你能在不改变成百上千行代码的情况下调试它吗。我发现答案是否定的。这对我来说很有效,我没有那么多的绑定,所以没有太多的功能
皮塔。但对于VisualStudio异常消息,它实际上是完全无用的。这是一个非常模糊的问题的另一个神奇的解决方案。谢谢你的提醒,但我们有很多数据绑定,我正试图决定哪一个需要属性集/到底发生了什么。我没有足够的声誉来否决这个答案。你没有回答这个问题。我有和OP一样的问题。我有一个有几十个数据绑定字段的表单。突然,我发现了这个问题,我无法判断哪个领域失败了。问题是如何确定哪个字段失败。这是一个可怕的错误信息。异常的堆栈跟踪不包含有用的上下文?也许你应该花点时间阅读MSDN的文章。它包括一部分关于错误处理的内容,这可能是由于true参数造成的。@Dan-不小心将我的回答留给了您。由于当时与DevExpress控件相关,建议的答案没有帮助。问题是,你能在不改变成百上千行代码的情况下调试它吗。我发现答案是否定的。这对我来说很有效,我没有那么多的绑定,所以它不是一个很好的PITA。但对于VisualStudio异常消息,它实际上是完全无用的。这是一个非常模糊的问题的另一个神奇的解决方案。