简而言之,此数据绑定功能正常工作。
tbTotalTaxDue.DataBindings.Add("Text", I, "TotalTaxDue");
当我输入无效值,比如空字符串,然后离开文本框时,其中的值会恢复为以前的值。这是有道理的,因为输入的值不会进入十进制类型的对象属性中。不幸的是,以下任何一个数据绑定都会出现问题:
tbTotalTaxDue.DataBindings.Add("Text", I, "TotalTaxDue", true, DataSourceUpdateMode.OnPropertyChanged, 0, "C");
tbTotalTaxDue.DataBindings.Add("Text", I, "TotalTaxDue", true, DataSourceUpdateMode.OnValidation, 0, "C");
如果用户输入空字符串,与其他方式不同的是,输入框不会让用户跳出。有没有办法使数据绑定显示为货币,但只是取消任何无效的编辑呢?
Add()
的第四个参数是一个布尔值,用于启用格式化;在后两个调用中,您将其设置为 true。Binding.FormattingEnabled
的默认值为 false,当设置为 true 时,它将执行类型检查。因为空字符串无法转换为十进制值,所以它不会通过验证。 - RobOnFormat()
。 :) - Rob