2013-04-17 51 views
0

如果我有一個驗證方法Method1返回e.Cancel真或假,和它看起來像這樣:驗證一個方法C#

private void textBox1_Validating_1(object sender, CancelEventArgs e) 
{ 
    ErrorProvider errorProvider = new ErrorProvider(); 

    bool isEmpty = String.IsNullOrEmpty(textBox1.Text); 
    if (isEmpty) 
    { 
     e.Cancel = true; 
     errorProvider.SetError(textBox1, "txt"); 
    } 
    else 
    { 
     e.Cancel = false; 
     errorProvider.SetError(textBox1, ""); 
    } 
} 

而且我想要得到驗證的結果,在我的另一種方法在這裏:

private void button4_Click(object sender, EventArgs e) 
{ 
    //bool passed = this.Validate(textBox1_Validating_1); 
    if (passed == false) return; 

我想是這樣的:

bool passed = this.Validate(textBox1_Validating_1); 

只有驗證這一個方法。我該怎麼做?

我能做到這一點是這樣的:

  bool passed = this.ValidateChildren(); 
     if (passed == false) return; 

但如果我這樣做,然後驗證我的所有方法,但我一個想驗證僅這一項Method1 我怎樣才能做到這一點?

+0

不清楚可以解釋更多 – gasroot

+0

問題是什麼?你有什麼問題? – skyfoot

回答

0
public bool IsValidated() 
    { 
    return !String.IsNullOrEmpty(textBox1.Text); 
    } 
private void button4_Click(object sender, EventArgs e) 
{ 
     bool passed = IsValidated(); 
} 
2

我會建議創建一個單獨的驗證方法並在提交時調用它。試試這個:

private void SubmitButton_Click(object sender, EventArgs e) 
    { 
     if (ValidateControls()==0) 
     { 
      //Form is validated 
     } 
    } 

int ValidateControls() 
{ 
    int flag = 0; 
    errorProvider1.Clear(); 
    if (txtAge.Text.Trim() == String.Empty) 
    { 
     errorProvider1.SetError(txtAge, "Age is required"); 
     flag = 1; 
    } 
    ............................................ 
    ............................................ 
    // validate all controls 
    ............................................ 
    ............................................ 

    if (txtSalary.Text.Trim() == String.Empty) 
    { 
     errorProvider1.SetError(txtSalary, "Salary is required"); 
     flag = 1; 
    } 

    return flag; 
} 
1

是這樣的嗎?

var cnclEvent = new CancelEventArgs(); 

textBox1_Validating_1(null, cnclEvent); 
if (cnclEvent.Cancel) return; 
相關問題