Исключение привязки данных Невозможно отформатировать значение до нужного типа, который трудно отладить - PullRequest
1 голос
/ 27 марта 2012

Мы используем много привязки данных в нашем приложении winforms, и недавно мы столкнулись с некоторыми сложными для отладки сценариями.

При вызове ResumeBinding () для нашего BindingSource мы получаем исключение:

ex.Type FormatException ex.Message Невозможно отформатировать значение до нужного типа:

в System.Windows.Forms.Binding.FormatObject (Object value) в System.Windows.Forms.Binding.PullData (логическое переформатирование, логическая сила) в System.Windows.Forms.BindingManagerBase.PullData (логическое значение и успех) в System.Windows.Forms.CurrencyManager.CurrencyManager_PullData () в System.Windows.Forms.CurrencyManager.WitCurrent.Forms..Windows.Forms.CurrencyManager.ResumeBinding () в System.Windows.Forms.BindingSource.ResumeBinding () в SomeProject.SomePanel.FlightData_DataReady () в C: \ SomeDir \ SomePanel.cs: строка 94

Мы используем простойобъектная модель с некоторыми Nullable свойствами.Не у всех из них есть попытки перехвата методов установки / получения, хотя

Мы используем компоненты DevExpress, это исключение началось после изменения свойства в свойство Nullable и добавления свойства NullText в текстовое поле DevExpress.

Может кто-нибудь пролить свет на то, как отладить эту ситуацию?


Поработав над этой проблемой немного больше, я заметил некоторые подробности, создающие эту проблему.

Одно из двойных свойств Nullable было привязано к элементу управления, имеющему свойство Single.Механизм привязки данных выдал некоторые исключения Первого изменения, касающиеся невозможности конвертировать Nullable double в Single.

Отладить это и найти, какой элемент управления / свойство был виноват, до сих пор невозможно сделать, у кого-нибудь есть подсказки, как это сделать?

1 Ответ

13 голосов
/ 28 марта 2012

Попробуйте включить форматирование

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

Обратите внимание на параметр true

Установка этого свойства в значение true также разрешает поведение при обработке ошибок и вызывает событие BindingComplete.Обработчик этого события может предпринять соответствующее действие, основанное на успешности, ошибке или исключениях в процессе привязки, изучив свойство BindingCompleteState параметра BindingCompleteEventArgs.

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

...