我有一些文本框数据绑定到BindingSource到自定义业务对象。数据绑定按以下代码完成 -
txtBookNo.DataBindings.Add("Text", bs, "BookNo", true, DataSourceUpdateMode.OnPropertyChanged, null, "G", GlobalVariables.CurrentCultureInfo);
现在我想验证用户输入。哪个事件最适合此目的 - Textbox.Validating或Textbox.Validated?那么,DatasourceUpdateMode- OnPropertyChanged或OnValidation应该是什么?
感谢。
答案 0 :(得分:9)
Validating
在验证过程开始之前被触发,这是放置实际验证代码的地方。Validated
被触发,并根据验证结果设计为某个位置。如果使用DataSourceUpdateMode.OnPropertyChanged
,则:
只要控件属性的值发生更改,就会更新数据源。
如果使用DatasourceUpdateMode.OnValidation
,则:
验证控件属性时会更新数据源, 验证后,控件属性中的值也将重新格式化。
如果您只希望将有效(即已经过代码验证的数据)数据发送到您的自定义业务对象,请使用DataSourceUpdateMode.OnValidation
。
Here是一篇解释如何在Windows窗体中进行验证的文章。
答案 1 :(得分:1)
Textbox.Validating或Textbox.Validated?
在documentation上有解释。 Textbox.Validating 是放置验证流程的最佳位置。
private void textBox1_Validating(object sender,
System.ComponentModel.CancelEventArgs e)
{
string errorMsg;
bool valid = /*do some validation*/;
if(!valid)
{
// to cancel validating
e.Cancel = true;
}
}