0

Method1e.Cancel true または false を返す検証メソッドが 1 つある場合、次のようになります。

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

この1つの方法を検証するためだけに。どうすればいいのですか?

私はこのようにすることができます:

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

しかし、それを行うと、すべてのメソッドを検証しますが、これだけを検証したいのですが、Method1 どうすればこれを達成できますか?

4

3 に答える 3

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;
}
于 2013-04-17T13:36:31.587 に答える
1

このようなもの?

var cnclEvent = new CancelEventArgs();

textBox1_Validating_1(null, cnclEvent);
if (cnclEvent.Cancel) return;
于 2013-04-17T13:36:33.047 に答える