2013-08-31 63 views
3

我有一些文本框数据绑定到BindingSource到自定义业务对象。数据绑定按以下代码完成 -验证或验证的事件?

txtBookNo.DataBindings.Add("Text", bs, "BookNo", true, DataSourceUpdateMode.OnPropertyChanged, null, "G", GlobalVariables.CurrentCultureInfo); 

现在我想验证用户输入。哪个事件最适合此目的 - Textbox.Validating或Textbox.Validated?而且,应该是DatasourceUpdateMode- OnPropertyChanged或OnValidation?

谢谢。

+0

你是什么意思,“什么应该是DatasourceUpdateMode- OnPropertyChanged或OnValidation”? – mickro

回答

8
  • Validating触发验证过程开始之前,这是把实际的验证代码的地方。
  • Validated在验证过程结束后被触发,并被设计为基于验证结果的东西。

如果DataSourceUpdateMode.OnPropertyChanged被使用,则:

数据源被更新每当的控制属性的值更改。

DatasourceUpdateMode.OnValidation如果使用,则:当控制属性被验证,

数据源被更新 验证之后,在控制属性的值也将被重新格式化。

如果你想唯一有效的(这意味着它已经被你的代码验证)的数据将被发送到您的自定义业务对象,你shuld使用DataSourceUpdateMode.OnValidation

Here是一篇文章,解释如何在Windows窗体中进行验证。

+0

感谢juhan_h的回复和MSDN参考。 –

1

Textbox.Validating or 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; 
    } 
}