В двух словах, эта привязка данных работает правильно
tbTotalTaxDue.DataBindings.Add("Text", I, "TotalTaxDue");
А именно, когда я ввожу недопустимое значение - например, пустую строку - затем выводю из ТБ, значение в нем просто возвращается к предыдущему значению. Это имеет смысл, так как введенное значение не войдет в свойство объекта типа decimal. К сожалению, хотя бы один из этих привязок данных:
tbTotalTaxDue.DataBindings.Add("Text", I, "TotalTaxDue", true, DataSourceUpdateMode.OnPropertyChanged, 0, "C");
tbTotalTaxDue.DataBindings.Add("Text", I, "TotalTaxDue", true, DataSourceUpdateMode.OnValidation, 0, "C");
Поведение по-другому в том, что когда пользователь вводит пустую строку, ввод не будет позволять пользователю вкладку из текстового поля. Есть ли способ заставить привязку данных отображать в виде валюты, но просто отменить любые недействительные изменения?