【问题标题】:Validating or Validated event?验证或验证事件?
【发布时间】:2013-08-31 13:54:19
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

  • “而且,DatasourceUpdateMode-OnPropertyChanged 或 OnValidation 应该是什么”是什么意思?

标签: c# winforms


【解决方案1】:
  • Validating 在验证过程开始之前被触发,这是放置实际验证代码的地方。
  • Validated 在验证过程完成后被触发,并被设计为基于验证结果的位置。

如果使用DataSourceUpdateMode.OnPropertyChanged,则:

只要控件属性的值发生变化,数据源就会更新。

如果使用DatasourceUpdateMode.OnValidation,则:

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

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

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

【讨论】:

  • 感谢 juhan_h 的回复和 MSDN 参考。
【解决方案2】:

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;
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 2010-10-26
    • 1970-01-01
    • 2021-07-24
    • 2021-02-16
    • 2019-06-25
    • 2021-10-11
    相关资源
    最近更新 更多