none
Tempo de exibição panel RRS feed

  • Pergunta

  • Olá pessoal, Eu preciso que o panel1 fique visivel por 10 segundos logo após aparecesse outro.

    Alguém pode me ajudar. 

    sexta-feira, 17 de novembro de 2017 15:53

Respostas

  • Opa Felipe Blz ?!

    O Método TrocarPenel precisa ser assíncrono pra funcionar dessa forma!

    Você pode usar as seguintes opções:

    private void Form1_Load(object sender, System.EventArgs e)
    {
        var work = new BackgroundWorker();
        work.DoWork += delegate
        {
            System.Threading.Thread.Sleep(1000);
            panel1.BeginInvoke((Action)(() => { panel1.Visible = false; }));
            panel2.BeginInvoke((Action)(() => { panel2.Visible = true; }));
        };
        work.RunWorkerAsync(); 
    }

    Ou:

    private void Form1_Load(object sender, System.EventArgs e)
    {
        var timer = new Timer();
        timer.Interval = 1000;
        timer.Tick += async (o, x) => await TrocarPanel();
        timer.Start();
    }
    
    private async Task TrocarPanel()
    {
        panel1.Visible = false;
        panel2.Visible = true;
    }

    Espero ter ajudado!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Senior Developer .NET C#
    Development Leader at JAMSOFT Informática
    Criador e Mantenedor do Entity Framework Core for Firebird
    Contribuidor do Entity Framework Core
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    domingo, 19 de novembro de 2017 22:49

Todas as Respostas

  • No load do seu form (ou no evento que desejar que a contagem comece) você pode usar esse código:

    using System;
    using System.Threading.Tasks;
    using System.Timers;
    
    private void Form1_Load(object sender, System.EventArgs e)
    {
          Timer timer = new Timer(10000);
          timer.Elapsed += async ( sender, e ) => await TrocarPanel();
          timer.Start();
    }
    
    private Task TrocarPanel()
    {
       panel1.Visible = false;
       panel2.Visible = true;
    }


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    sexta-feira, 17 de novembro de 2017 17:20
  • Não funcionou! Dauma serie de erros.
    domingo, 19 de novembro de 2017 15:15
  • Felipe, se não colocar aqui os erros e como ficou o seu código, não tem como lhe ajudar.

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    domingo, 19 de novembro de 2017 17:00
  • Desculpe,eu ainda to começando.

    Eu coloquei using System.Windows.Forms; using System.Timers; Mas ainda da erro.

      Coloquei using System.Windows.Forms;
    using System.Timers;

    mas não funcionou...

    domingo, 19 de novembro de 2017 18:11
  • Opa Felipe Blz ?!

    O Método TrocarPenel precisa ser assíncrono pra funcionar dessa forma!

    Você pode usar as seguintes opções:

    private void Form1_Load(object sender, System.EventArgs e)
    {
        var work = new BackgroundWorker();
        work.DoWork += delegate
        {
            System.Threading.Thread.Sleep(1000);
            panel1.BeginInvoke((Action)(() => { panel1.Visible = false; }));
            panel2.BeginInvoke((Action)(() => { panel2.Visible = true; }));
        };
        work.RunWorkerAsync(); 
    }

    Ou:

    private void Form1_Load(object sender, System.EventArgs e)
    {
        var timer = new Timer();
        timer.Interval = 1000;
        timer.Tick += async (o, x) => await TrocarPanel();
        timer.Start();
    }
    
    private async Task TrocarPanel()
    {
        panel1.Visible = false;
        panel2.Visible = true;
    }

    Espero ter ajudado!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Senior Developer .NET C#
    Development Leader at JAMSOFT Informática
    Criador e Mantenedor do Entity Framework Core for Firebird
    Contribuidor do Entity Framework Core
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    domingo, 19 de novembro de 2017 22:49
  • Saudações.

    System.Threading.Thread.Sleep(TimeSpan.FromSeconds(10));

    Fonte: https://msdn.microsoft.com/pt-br/library/system.timespan(v=vs.110).aspx

    Atenciosamente,
    ____________________________________
    Agnaldo Guimarães

    Se te ajudei, sinalize como "útil" e lembre-se de "marcar como resposta".
    Quando você marca como resposta os outros visitantes encontram a solução facilmente.

    ** Para que o mau prevaleça basta que os bons não façam nada....



    segunda-feira, 20 de novembro de 2017 02:51