2016-08-15 9 views
0

Я делаю memotest, и мне нужно нажать два разных изображения, и они должны оставаться видимыми в течение 3-5 секунд. Я пробовал Thread.Sleep(5000), но он не показывает мне вторую. Что мне делать? Единственный способ, с помощью которого я нашел несколько секунд, чтобы изображения были, поставив MessageBox, но это не идея, и я не знаю другого способа сделать это.Как сделать две фотографии невидимыми через определенное время

if (pic != null && pic.Name == fondos[i].Name) 
{ 
    if (CantClick == 0) 
    { 
     ParejaActual = listRandom[i].pareja; 
     CantClick = 1; 
     primerI = i; 
     picAnterior = pic; 
     imgAnterior = img; 
     pic.Visible = false; 

    } 
    else if (CantClick == 1) 
    { 
     pic.Visible = false; 
     if (ParejaActual == listRandom[i].pareja) 
     { 
      SoundPlayer simpleSound = (new SoundPlayer(Configuracion.RootFolder + "aplau.wav")); 
      simpleSound.Play(); 
      Ganando++; 
      label3.Text = Ganando.ToString(); 
      //MessageBox.Show("Si"); 
      //NO SE DESTAPA LA SEGUNDA. 
      //Thread.Sleep(5000); 
      CantClick = 0; 
      img.Visible = false; 
      imgAnterior.Visible = false; 
      Application.DoEvents(); 

     } 
     else 
     { 

      (new SoundPlayer(Configuracion.RootFolder + "sad.wav")).Play(); 
      MessageBox.Show("No"); 
      Mal++; 
      CantClick = 0; 
      label4.Text = Mal.ToString(); 
      pic.Visible = true; 
      picAnterior.Visible = true; 
     } 
    } 
} 

Спасибо!

+4

Вам необходимо использовать объект System.Windows.Forms.Timer в вашей форме. Не пытайтесь использовать Thread.Sleep в коде UI. – PMF

ответ

1

Вместо использования Thread.Sleep используйте класс System.Timers. После интервала просто скройте одно изображение и покажите другое. Скажи мне, если хочешь любую другую помощь.

+0

Я не могу снова показать «pic» в timer_tick, потому что это общедоступная переменная. Как я могу сделать? private void timer3_Tick (отправитель объекта, EventArgs e) { counter3--; if (counter3 == 0) { CantClick = 0; picAnterior.Visible = true; picAnterior.Visible = true; Application.DoEvents(); counter3 = 3; timer3.Stop(); } } – sol