2014-11-09 2 views
2

Мне нужно скрыть отправку, но если есть какая-либо ошибка в проверке. Я использую приведенный ниже код, где, если бы я ввел оба текстовых поля с символами, и если я исправлю 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, ""); 
    } 
} 

ответ

1

Убедитесь, что оба текстовые окна ошибок перед установкой видимости кнопки для True. Вы можете использовать для этого другой метод, как я сделал ниже, используя UpdateSubmitButton.

Этот метод проверяет соответствие textBox5 или textBox6, а затем обновляет видимость button2. Обратите внимание, что я удалил другие присваивания от каждого из событий 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(); 
} 
+0

«System.Windows.Forms.TextBox» не содержит определение для «GetError» и нет методы расширения «GetError» принимая первый аргумент типа «System.Windows.Forms.TextBox» можно найти – JIMMY

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 вы хотите контролировать

Смежные вопросы