2016-04-29 6 views
0

Я делаю некоторые проверки относительно пути (если файл существует или нет в указанном каталоге), и мне нужно запустить TextChangedEvent через некоторое время после ошибки, чтобы снова проверить этот файл. Вот код, который я использую для проверки этой ошибки:Как запустить событие Text.TextChanged с таймером

private void textBoxNovoSvrc_TextChanged(object sender, EventArgs e) 
     { 
      First++; 
      bool ok = false; 
      int same = 0; 
      try 
      { 

       if (!String.IsNullOrWhiteSpace(textBoxNovoSvrc.Text) && Program.Funcoes.ExisteDirectoria(textBoxNovoSvrc.Text) == true) 
       { 
        if (Erro2 == -1 || Erro2 == 0) 

         same = TextBoxSame(First); 
        if (same == 1) 
         return; 
        if (Global.VersaoInvalidaCli == true && Global.VersaoInvalidaSvrc == true) 
        { 
         Global.SvrcChanged = true; 
         buttonContinuar.PerformClick(); 

        } 
        if (Program.Funcoes.ExisteFicheiro(textBoxNovoSvrc.Text + @"\OrcaService.exe.config") == true) 
        { 
         if (Global.VersaoInvalidaCli == true && Global.VersaoInvalidaSvrc == true) 
         { 
          buttonContinuar.PerformClick(); 
          epDoesntExist1.Dispose(); 
          epInvalidVersionSvrc.SetError(textBoxNovoSvrc, "Versão de Update Inválida!"); 
          epInvalidVersionSvrc.Dispose(); 
          epInvalidVersionCli.Dispose(); 
          textBoxNovoCli.Text = Directory.GetParent(textBoxNovoSvrc.Text) + @"\Orca"; 
          return; 

         } 
         if (textBox1 == textBoxNovoSvrc.Name || textBox2 == textBoxNovoSvrc.Name) 
         { 
          TextBoxes(textBox1, textBox2, true); 
         } 
         //Colocar aqui a versão mais recente do update; 
         string path = Directory.GetParent(textBoxNovoSvrc.Text).ToString(); 
         //string Nome = System.IO.Path.GetFileName(path); 
         labelNovaVersãoServ.Text = Program.Funcoes.NovaVersao(path, Global.versionError); 
         Erro2 = 0; 
         ok = true; 
         errorProviderNoSvrc.Dispose(); 
         epInvalidVersionSvrc.Dispose(); 
         epDoesntExist2.Dispose(); 
         Global.NovoServiço = textBoxNovoSvrc.Text; 
         textBoxNovoSvrc.BackColor = System.Drawing.Color.Green; 
         Continue++; 
         if (Continue >= 4) 
          buttonContinuar.Enabled = true; 
         else 
         { 

          buttonContinuar.Enabled = false; 
         } 
         btnBrowse2.Enabled = true; 
         textBoxNovoCli.Enabled = true; 
         textBoxNovoCli.Text = ""; 
         textBoxNovoCli.Text = Directory.GetParent(textBoxNovoSvrc.Text).ToString() + @"\Orca"; 

        } 
        else 
        { 
         ok = false; 
         textBoxNovoSvrc.BackColor = System.Drawing.Color.Red; 
         buttonContinuar.Enabled = false; 
         Erro2 = 1; 
         textBoxNovoSvrc.Focus(); 
         epDoesntExist2.Dispose(); 
         epInvalidVersionSvrc.Dispose(); 
         errorProviderNoSvrc.SetError(textBoxNovoSvrc, "Ficheiro \"OrcaService.exe.config\" não existe na directoria"); 

         return; 

        } 

На последнем еще после errorProviderNoSvrc.SetError(textBoxNovoSvrc, "Ficheiro \"OrcaService.exe.config\" não existe na directoria"); мне нужно стрелять таймер подождать около 5 секунд перед разжиганием события TextChanged снова. Возможно ли это сделать или что мне нужно сделать еще один подход, например, запустить окно с запросом, чтобы снова проверить файл и запустить событие TextChanged «вручную», сохранив путь в var и, текстовое поле, как это TexBoxNovoSvrc.Text = "" и чем TextBoxNovoSvrc.Text = OldPath.

+0

Почему бы просто не назвать его? 'textBoxNovoSvrc_TextChanged (null, null)', поскольку args являются стандартными аргументами. – TaW

ответ

1

Вы можете использовать таймер:

в начале (за пределами textBoxNovoSvrc_TextChanged), может быть в конструкторе

Timer t = new Timer(); 
t.Interval = 5000; 
t.Tick += textBoxNovoSvrc_TextChanged; 

как раз перед последним return

t.Start(); 

И в начале textBoxNovoSvrc_TextChanged:

if(t.Enabled){ 
    t.Stop() 
} 
+0

ok кажется отличной идеей. на что вы в точности ссылаетесь на «И в начале»? –

+0

начало события 'textBoxNovoSvrc_TextChanged' ... Отредактировано – SamGhatak

+0

работает как шарм: D спасибо. другой вопрос: если я решил запустить окно сообщения после этих 5 секунд, что мне нужно изменить на этот код? –