3

我有一些文本框数据绑定到 BindingSource 到自定义业务对象。数据绑定按照以下代码完成 -

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

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

谢谢。

4

2 回答 2

10
  • Validating在验证过程开始之前触发,这是放置实际验证代码的地方。
  • Validated在验证过程完成后被触发,并且被设计为基于验证结果的地方。

如果DataSourceUpdateMode.OnPropertyChanged使用则:

每当控件属性的值更改时,都会更新数据源。

如果DatasourceUpdateMode.OnValidation使用则:

验证控件属性时更新数据源,验证后控件属性中的值也将重新格式化。

如果您只想将有效(这意味着它已通过您的代码验证)数据发送到您应该使用的自定义业务对象DataSourceUpdateMode.OnValidation

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

于 2013-08-31T05:54:19.760 回答
1

Textbox.Validating 还是 Textbox.Validated?

正如文档中所解释的那样。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;
  }
}
于 2013-08-31T05:30:56.330 回答