2013-05-13 51 views
0

我有验证事件。将CauseValidation设置为false但不起作用

private void EmployeeIDtextBox_Validating(object sender, CancelEventArgs e) 
    { 

     if (EmployeeIDtextBox.Text == "") 
     { 
      MessageBox.Show("Please Enter EmployeeID.", "Invalid EmployeeID"); 
     } 

    } 

并设置我的cancelbutton causevalidation假,但是当我打cancelbutton的消息框仍然显示。

+0

我检查它的causevalidation是正确的。你在哪里设置原因验证是真的 – Sathish 2013-05-13 05:44:49

+0

是的我正在验证文本框 – 2013-05-13 05:45:57

+0

@KarlxSwanovski U需要设置导致取消按钮层次结构中所有控件的验证。假设树是Form-> Panel-> Button,你需要将每个表单的原因验证设置为false,面板n按钮 – Akanksha 2013-05-13 05:49:20

回答

0

您需要将Cancel按钮层次结构中所有控件的CausesValidation属性设置为false。

例如:Form1包含Panel1,Panel1包含您的取消按钮。您需要将Form1,Panel1和Cancel按钮的CausesValidation属性设置为false。

CausesValidation是Control类的一个属性。阅读更多关于它的信息here

如果CausesValidation为true(默认值),则控件允许触发验证事件。

如果层次结构中的控件的CausesValidation为true,并且他们在您点击取消按钮之前获得焦点,则将触发验证事件。

要避免在面板1中的控件处于禁用状态,您应该使用单独的面板或无取消按钮。

希望它有帮助。

编辑: 我检查了我的结尾。在移动到取消按钮时,无论控制收益如何聚焦,都应该使CausesValidation为false。

将TextBox的层次结构中的CausesValidation设置为false,除了TextBox本身。

+0

谢谢,但它仍然无法正常工作。 :( – 2013-05-13 06:16:43

0
bool IsCancelBtnClicked = false; 
    private void EmployeeIDtextBox_Validating(object sender, CancelEventArgs e) 
    { 
     if (EmployeeIDtextBox.Text == "") 
     { 
      MessageBox.Show("Please Enter EmployeeID.", "Invalid EmployeeID"); 
     } 
    } 

    private void button3_Click(object sender, EventArgs e) 
    { 
     IsCancelBtnClicked = true; 
     EmployeeIDtextBox.Validating -= new CancelEventHandler(textBox4_Validating); 
     this.Close(); 
    }  

感谢这https://stackoverflow.com/a/16113700/2322994。 :)

相关问题