2010-09-23 48 views
2

当试图验证窗体窗体上的控件时,我意识到每个控件的.validated()会在焦点丢失时触发。相反,我只想在底部按下按钮时进行验证,我该怎么做?立即执行所有验证

回答

0

,您可以检查所有的验证条件Button_Click

/// <summary> 
    /// 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    private void button1_Click(object sender, EventArgs e) 
    { 
     if (!String.IsNullOrEmpty(txtUserName.Text)) 
     { 
      MessageBox.Show("Please enter user Name"); 
     } 
     else if(condition) 
     { 
     } 
     ........... 
    } 
+0

我相信OP在谈论调用他的“验证器”只是按下按钮而不是焦点丢失 – InSane 2010-09-23 09:24:18

+0

我结束了使用这个 – 2010-09-27 08:17:53

1

当您设置CausesValidation属性为true .Validating(及更高版本:.Validated)当你离开的控制事件触发。将其设置为false或根本不处理该事件。

要进行表单级验证,请处理.Closing事件(优于Buttonclick)并在此处编写逻辑。调用Validating事件处理程序没有意义。

1

将AutoValidate设置为AutoValidate.Disable,并在按钮单击事件中调用ValidateChildren()方法(它将触发所有“验证/验证”事件)。 MSDN