简而言之,此数据绑定可以正常工作
tbTotalTaxDue.DataBindings.Add("Text", I, "TotalTaxDue");
即,当我输入一个无效值(如空字符串)然后从TB中跳出时,其中的值将恢复为先前的值.这是有道理的,因为输入的值不会进入小数类型的object属性.但是,不幸的是,这些数据绑定之一:
tbTotalTaxDue.DataBindings.Add("Text", I, "TotalTaxDue", true, DataSourceUpdateMode.OnPropertyChanged, 0, "C");
tbTotalTaxDue.DataBindings.Add("Text", I, "TotalTaxDue", true, DataSourceUpdateMode.OnValidation, 0, "C");
行为不同之处在于,当用户输入空字符串时,输入内容不会让用户在文本框中跳格.有什么方法可以使数据绑定显示为货币,而只是取消所有无效的编辑?
解决方法:
您有两种选择:
>子类化TextBox并覆盖OnValidating事件.如果Text为空,请在调用MyBase.OnValidating()之前退出以取消该事件.
>在TextBox上设置CausesValidation = False,并处理TextChanged事件.如果“文本”不为空,请手动进行验证.
我希望这有帮助.