如果验证中有任何错误,请禁用提交按钮

时间:2014-11-09 06:46:03

标签: c# .net validation

我需要隐藏提交但是如果验证中有任何错误。我使用下面的代码,如果我输入带有字符的文本框,如果我更正文本框中的1,则提交按钮变为可见!如何避免它利用所有的错误是否清楚? 谢谢

int num;

private void textBox5_TextChanged(object sender, EventArgs e)
{
    bool isNum = int.TryParse(textBox5.Text.Trim(), out num);
    if (!isNum)
    {
        button2.Visible = false;
        errorProvider1.SetError(this.textBox5, "Please enter numbers");   
    }
    else
    {
        button2.Visible = true;
        errorProvider1.SetError(this.textBox5, "");
    }
}

private void textBox6_TextChanged(object sender, EventArgs e)
{
    bool isNum = int.TryParse(textBox6.Text.Trim(), out num);
    if (!isNum)
    {
        button2.Visible = false;
        errorProvider2.SetError(this.textBox6, "Please enter numbers");
    }
    else
    {
        button2.Visible = true;
        errorProvider2.SetError(this.textBox6, "");
    }
} 

2 个答案:

答案 0 :(得分:1)

在将按钮可见性设置为True之前,请检查两个文本框是否都没有错误。你可以使用另一种方法,就像我在下面使用UpdateSubmitButton所做的那样。

此方法会检查textBox5textBox6是否存在与之关联的错误,然后相应地更新button2的可见性。请注意,我从每个button2.Visible事件中删除了其他TextChanged个分配,并将其替换为对UpdateSubmitButton方法的调用。

private void UpdateSubmitButton()
{
    if (String.IsNullOrEmpty(errorProvider1.GetError) &&
        String.IsNullOrEmpty(errorProvider2.GetError))
    {
        button2.Visible = true;
    }
    else
    {
        button2.Visible = false;
    }
}

private void textBox5_TextChanged(object sender, EventArgs e)
{
    int num;
    bool isNum = int.TryParse(textBox5.Text.Trim(), out num);
    if (!isNum)
    {
        errorProvider1.SetError(this.textBox5, "Please enter numbers");   
    }
    else
    {
        errorProvider1.SetError(this.textBox5, "");
    }
    UpdateSubmitButton();
}

private void textBox6_TextChanged(object sender, EventArgs e)
{
    int num;
    bool isNum = int.TryParse(textBox6.Text.Trim(), out num);
    if (!isNum)
    {
        errorProvider2.SetError(this.textBox6, "Please enter numbers");
    }
    else
    {
        errorProvider2.SetError(this.textBox6, "");
    }
    UpdateSubmitButton();
} 

答案 1 :(得分:0)

根据您验证的文本框数量,您可以创建一个功能,一次性验证所有内容。

bool ValidateAll(){
    bool isNum = int.TryParse(textBox5.Text.Trim(), out num);
    if (!isNum)
    {
        return false; 
    }

    isNum = int.TryParse(textBox6.Text.Trim(), out num);
    if (!isNum)
    {
        return false;
    }
    return true;
}

然后调用要监视的所有TextChanged事件的此方法