2013-05-13 49 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。 :)

相關問題