2015-04-30 6 views
0

Я сделал простой интерфейс для проверки использования.1st вы вставляете текст в «txtinput», если вы вставляете что-то, кроме слов «привет», оно выскочит из окна сообщений «повторите попытку». на «txtchance» там номер «3» автоматически изменится на «2». Признак неверного ввода, он будет иметь шанс «1» и «0», тогда в окне сообщений появится «больше не пытается» и выйдет из приложения.validate and number automatic jumping

Проблема, с которой я сталкиваюсь, когда я использую «для цикла» для автоматического изменения номера «txtchance», он будет зациклять все без остановок, чтобы я попытался снова и выйти из приложения. Как остановить или разбить его?

здесь код

public partial class Form1 : Form 
{ 
    public int tries = 2; 
    public Form1() 
    { 
     InitializeComponent(); 
     txtchance.Text = "3"; 
    } 

    private void btn_click_Click(object sender, EventArgs e) 
    { 
     if (txtinput.Text != string.Empty) 
     { 
      if (txtinput.Text == "hello") 
      { 
       textBox1_Validated(sender, e); 
      } 
      else 
      { 
       textBox1_Validating(sender, e); 
      } 
     } 
    } 

    private void textBox1_Validating(object sender, EventArgs e) 
    { 
     if (tries > 0) 
     { 
      for (int i = 3; i >= 0; i--) 
      { 
       txtchance.Text = i.ToString(); 

       if (i > 0) 
       { 
        tries--; 
        txtinput.Clear(); 
        MessageBox.Show("Please try again", "Error"); 
       } 

       else 
       { 
        MessageBox.Show("Sorry, no more tries", "Error"); 
        Application.Exit(); 
       } 
      } 
     } 
    } 


    private void textBox1_Validated(object sender, EventArgs e) 
    { 
     if (tries != 0) 
     { 
      MessageBox.Show("Well done, you managed to enter a valid input!", "Validation OK"); 
      this.Close(); 
     } 
    } 
} 

Здесь screenshort https://www.imageupload.co.uk/image/Zl1K

ответ

1

Петля for не нужна, вообще. То, что вы действительно хотите сделать, это просто проверить ваше поле tries:

private void textBox1_Validating(object sender, EventArgs e) 
{ 
    txtchance.Text = tries.ToString(); 

    if (tries-- > 0) 
    { 
     txtinput.Clear(); 
     MessageBox.Show("Please try again", "Error"); 
    } 
    else 
    { 
     MessageBox.Show("Sorry, no more tries", "Error"); 
     Application.Exit(); 
    } 
} 
+0

Спасибо, что это работа !!! –