简而言之,这种数据绑定正常工作
tbTotalTaxDue.DataBindings.Add("Text", I, "TotalTaxDue");
即,当我输入一个无效值 - 如空字符串 - 然后从TB中跳出选项卡时,其中的值只会恢复到之前的值。这是有道理的,因为输入的值不会进入decimal类型的object属性。不幸的是,这些数据绑定中的任何一个:
tbTotalTaxDue.DataBindings.Add("Text", I, "TotalTaxDue", true, DataSourceUpdateMode.OnPropertyChanged, 0, "C");
tbTotalTaxDue.DataBindings.Add("Text", I, "TotalTaxDue", true, DataSourceUpdateMode.OnValidation, 0, "C");
表现不同的是,当用户输入空字符串时,输入不会让用户选项卡退出文本框。有没有办法让数据绑定显示为货币,但只是取消任何无效的编辑?
答案 0 :(得分:3)
您有几个选择:
子类TextBox
并覆盖OnValidating
事件。如果Text
为空,请在致电MyBase.OnValidating()
之前退出以取消该活动。
在CausesValidation = False
上设置TextBox
,并处理TextChanged
事件。如果Text
不为空,请手动验证。
我希望这会有所帮助。