none
Como Criar Tela de Inicialização RRS feed

  • Pergunta

  • Olá

    Eu gostaria de sabe como eu poderia fazer uma tela inicial do meu programa, onde ela conterá imagem do programa mais uma informações.
    Nesta tela eu gotaria de colocar um ProgressBar, mas eu não sei como fazer ele funcionar, pois esta tela ficará aberta enquanto o programa carregar seus drivers, faz conexões com o banco, carrega o programa, eu não sei o ProgressBar funcionar sincrono com essas coisas.
    Esta tela tem que ser exibida no minimo por 3s. Porque caso o processo de inincialização seja muito rápido, eu quero exibir a minha tela de inicialização no minimo por 3s para dar tempo do usuario ver a tela.
    E após tudooo isso tem que chamar o Formulário principal.

    Obrigado
    quarta-feira, 17 de fevereiro de 2010 15:32

Respostas

  • Henrique, tenta fazer assim, talvez voce tenha mais controle:

        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new SplashScreen());
                AppDomain.CurrentDomain.AssemblyLoad -= CurrentDomain_AssemblyLoad;
                Application.Run(new FrmMain());           
            }
    
            static void CurrentDomain_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
            {
                SplashScreen.Assemblies.Enqueue(args.LoadedAssembly.GetName().Name);
            }
        }
    
    
        public partial class SplashScreen : Form
        {
            [DllImport("kernel32.dll")]
            static extern void Sleep(int dwMilliseconds);
    
            public static Queue<String> Assemblies = new Queue<String>();
    
            public SplashScreen()
            {
                InitializeComponent();
                tmrLoading.Enabled = true;    
            }
    
            private void tmrLoading_Tick(object sender, EventArgs e)
            {
                while (Assemblies.Count > 0)
                {
                    lblLoading.Text = String.Format("Carregando... {0}", Assemblies.Dequeue());
                    lblLoading.Refresh();
                    this.Invalidate(true);
                    Sleep(1000);
                }
    
                Close();
            }
        }
    Voce pode tambem criar um segundo timer para fechar a aplicacao.
    Alem dos assemblies, vc pode delegar a alguem a responsabilidade do que esta sendo carregado e assim, manter sua progressbar
    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    • Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 02:51
    quarta-feira, 17 de fevereiro de 2010 20:45
  • Esse processo nao é tao simples quanto parece. O que voce precisa é uma splash screen e pelo que voce relatou ela precisa ser assincrona.

    Minha sugestao é voce pegar o Program.cs, na primeira linha setar os eventos que voce precisa que sejam carregados. Uma sugestao é por exemplo:

    AppDomain

     

    .CurrentDomain.AssemblyLoad

    Depois disso, carregue sua splashscreen. Coloque um timer nela, e no evento desse timer, a tela ira atualizar o que esta sendo feito, atraves do resultado dos eventos assincronos que vc definiu o program.cs. Vc pode utilizar variaveis estaticas da aplicacao ou outro meio qualquer de administrar o que esta sendo feito. Nao esqueca de atualizar a tela pra poder aparecer na sua label, progress, seja la o que for.

    Com um segundo timer ou no final desse mesmo, voce fecha a tela, retorna ao Program.cs e agora sim voce carrega o form principal.


    Gustavo Rocha, MCP,MCTS,MCPD,CSM http://subindoaladeira.wordpress.com/
    quarta-feira, 17 de fevereiro de 2010 16:05
  • quarta-feira, 17 de fevereiro de 2010 18:58
  • Leonardo, use a rotina que eu sugeri e no form principal faça algo parecido com isso:

            private void FrmMain_Load(object sender, EventArgs e)
            {
                FrmLogin frmLogin = new FrmLogin();

                if (frmLogin.ShowDialog() == DialogResult.OK)
                {
                    // Atualizar dados do logon
                }
                else
                {
                    Application.ExitThread();
                    Application.Exit();
                }

                frmLogin.Dispose();
            }


    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    • Sugerido como Resposta Gustavo H Rocha quinta-feira, 18 de fevereiro de 2010 15:50
    • Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 02:51
    quinta-feira, 18 de fevereiro de 2010 15:50
  • Essa é a ordem do Program.cs, conforme eu coloquei no primeiro exemplo.
    Primeiro vc abre a splash, depois retira a assinatura do evento e enfim, chama o form principal.

                Application.Run(new SplashScreen());
                AppDomain.CurrentDomain.AssemblyLoad -= CurrentDomain_AssemblyLoad;
                Application.Run(new FrmMain());          


    1 -O segundo timer nao é obrigatorio, mas ele garante um tempinho da tela aberta mesmo que o processo seja muito rapido. Mas como eu disse, isso depende de como voce administrar o processo da splashscreen

    2 - O lblLoading é um label que mostra os assemblies que estao sendo carregando pelo sistema, mas essa foi minha utilizacao, vc iria colocar uma progressa nao é isso?

    3 - A resposta pra sua pergunta é outra pergunta: A progress vai mostrar a progressao de que? Isso que voce precisa saber. Se for algo simples, deixa sua progress e a logica de progressao dela na propria splash. O q eu fiz foi configurar o sistema pra, a cada dll q é carregada, a label exiba o nome do assembly, quando terminar, fecha e inicia o sistema.

    Pode perguntar a vontade, brother. So nao esqueca de marcar as respostas que foram uteis como uteis ou marcar como resposta.

    Abs

    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    • Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 02:51
    sexta-feira, 19 de fevereiro de 2010 02:39
  • 1 - Fatalmente, colocar o tmrLoading com 2000 vai fazer a tela demorar mais sim, mas pode ser que feche antes da carga dos assemblies se o tmrClose estiver com tempo menor.
    Na verdade o tmrLoading dispara para percorrer todos os assemblies carregados; Tenta mudar o valor pro tmrClose. Mas 2000 é bem pouco. Se nao me engano, 2 segundo.

    2 - Rapaz, isso acontece sim. Faz o seguinte, so como teste:
    Na sua solution, adiciona uma class library, cria uma classe qualquer. No projeto principal, adiciona referencia a essa class library. No construtor da splash, instancia uma classe dessa que vc criou. Assim vc garante que esse assembly vai ser carregado.
    Isso como teste. Vc pode colocar tambem um breakpoint no metodo CurrentDomain_AssemblyLoad do program.cs pra saber se tem algum assemlby sendo carregado;

    3 - A splash costuma ser puramente visual entao pode ser que a progress so com o tempo ja baste sim. Mas pra saber se vai dar trabalho, volto a pergunta, evolucao de que a progress deve apresentar?
    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    • Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 03:16
    sexta-feira, 19 de fevereiro de 2010 03:05
  • 1 - Acho que 5s ta de bom tamanho;

    2 - Vamos fazer o simples entao e ja pulamos pra 3 - No seu caso, pra simplificar acho que podemos ficar so com a progress e esquecer os assemblies. Vai ter mais utilizadade.
    Coloca a progress e faz o timer atualizar ela. quando acabar, fechar o form. Nem vai precisar do segundo timer;
    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    • Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 03:36
    sexta-feira, 19 de fevereiro de 2010 03:25
  • errei as properties

     

    if (progressBar.Value < progressBar.Maximum)

    progressBar.PerformStep();

     

    else

    Close();


    nao esquece de setar na progress o maximum do jeito que vc quer, o value inicial como 0 e o step como 1.

    e coloca o timer com 1000 tambem.
    testa ai e me fala


    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    • Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 04:05
    sexta-feira, 19 de fevereiro de 2010 03:44
  • entao. Maximum em 100 step em 10, blz. Se o timer esta disparando a cada um segundo, temos um total de 10 segundos. blz

    saindo do if eu ao entendi. vc tem que debuggar pra saber quando entra no timer, qual o value e qual o maximum.
    qual a condicao do if deve ser atendida? ta caindo no progressBar.performStep?

    por curiosidade, troca a linha de

    progressBar.PerformStep();

    por

    progressBar.Value += progressBar.Step;

    mas debuga e ve o que ____.

    esse codigo é o mais simples possivel, nao tem misterio.
    se nao funcionar, eu ate te recomendo a acabr com a tela de splash e fazer ela de novo do zero.


    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    • Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 04:09
    sexta-feira, 19 de fevereiro de 2010 04:04

Todas as Respostas

  • Esse processo nao é tao simples quanto parece. O que voce precisa é uma splash screen e pelo que voce relatou ela precisa ser assincrona.

    Minha sugestao é voce pegar o Program.cs, na primeira linha setar os eventos que voce precisa que sejam carregados. Uma sugestao é por exemplo:

    AppDomain

     

    .CurrentDomain.AssemblyLoad

    Depois disso, carregue sua splashscreen. Coloque um timer nela, e no evento desse timer, a tela ira atualizar o que esta sendo feito, atraves do resultado dos eventos assincronos que vc definiu o program.cs. Vc pode utilizar variaveis estaticas da aplicacao ou outro meio qualquer de administrar o que esta sendo feito. Nao esqueca de atualizar a tela pra poder aparecer na sua label, progress, seja la o que for.

    Com um segundo timer ou no final desse mesmo, voce fecha a tela, retorna ao Program.cs e agora sim voce carrega o form principal.


    Gustavo Rocha, MCP,MCTS,MCPD,CSM http://subindoaladeira.wordpress.com/
    quarta-feira, 17 de fevereiro de 2010 16:05
  • Eu até entendi +/- porem eu não tenho nem ideia de como fazer isso oq vc me disse, não sei como é esse splash screen.

    Vc poderia me ajudar passo a passo ?
    quarta-feira, 17 de fevereiro de 2010 16:23
  • quarta-feira, 17 de fevereiro de 2010 18:58
  • Um bom começo eu li tudo e consegui fazer a minha SplashScreen.
    Vamos lá com as dúvidas:

    1) No meu Program.cs. Nela tem o Application.Run(new F_Principal()); o F_Principal é o meu Form principal. Com essa SplashScreen eu não tenho que mudar para Application.Run(new SplashScreen()), e dentro da SplashScreen fazer a chamada do F_Principal() ???

    2) A SplashScreen fecha em 3s. Porem agora como que eu coloco o ProgressBar como oq eu havia dito acima ?

    3) Se o ProgressBar demora 10s para carregar tudo, e a minha SplashScreen fecha em 3s, ou seja, temos um problema, pois a SplashScreen terá que fechar em 10s e não mais 3s.

    Já que agora as 1ªs dúvidas estão ai, qual é o seguinte passo para continuar ?
    Tem que colocar o ProgressBar, fazer aquele negócio de assincronia, ou sincronia não sei. E essas novas dúvidas.
    quarta-feira, 17 de fevereiro de 2010 19:39
  • Henrique, tenta fazer assim, talvez voce tenha mais controle:

        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new SplashScreen());
                AppDomain.CurrentDomain.AssemblyLoad -= CurrentDomain_AssemblyLoad;
                Application.Run(new FrmMain());           
            }
    
            static void CurrentDomain_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
            {
                SplashScreen.Assemblies.Enqueue(args.LoadedAssembly.GetName().Name);
            }
        }
    
    
        public partial class SplashScreen : Form
        {
            [DllImport("kernel32.dll")]
            static extern void Sleep(int dwMilliseconds);
    
            public static Queue<String> Assemblies = new Queue<String>();
    
            public SplashScreen()
            {
                InitializeComponent();
                tmrLoading.Enabled = true;    
            }
    
            private void tmrLoading_Tick(object sender, EventArgs e)
            {
                while (Assemblies.Count > 0)
                {
                    lblLoading.Text = String.Format("Carregando... {0}", Assemblies.Dequeue());
                    lblLoading.Refresh();
                    this.Invalidate(true);
                    Sleep(1000);
                }
    
                Close();
            }
        }
    Voce pode tambem criar um segundo timer para fechar a aplicacao.
    Alem dos assemblies, vc pode delegar a alguem a responsabilidade do que esta sendo carregado e assim, manter sua progressbar
    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    • Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 02:51
    quarta-feira, 17 de fevereiro de 2010 20:45
  • Olá a todos.
    Eu gostaria de saber também o que o Henrique Alonso perguntou, mas com uma pequena diferença.
    Quando o programa for executado aparecesse uma tela SplashScreen com três segundos, apos ela fechar aparecer uma tela de login que no caso eu sei como faz já, ai se o usuário e senha fosse validado aparecesse a terceira tela que seria a principal que se for fechado fecha todo o programa.

    Agradeço Desde Já

    quinta-feira, 18 de fevereiro de 2010 15:30
  • Leonardo, use a rotina que eu sugeri e no form principal faça algo parecido com isso:

            private void FrmMain_Load(object sender, EventArgs e)
            {
                FrmLogin frmLogin = new FrmLogin();

                if (frmLogin.ShowDialog() == DialogResult.OK)
                {
                    // Atualizar dados do logon
                }
                else
                {
                    Application.ExitThread();
                    Application.Exit();
                }

                frmLogin.Dispose();
            }


    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    • Sugerido como Resposta Gustavo H Rocha quinta-feira, 18 de fevereiro de 2010 15:50
    • Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 02:51
    quinta-feira, 18 de fevereiro de 2010 15:50
  • Muito Obrigado Gustavo Rocha.
    Baseado no que você já falou eu consegui fazer.

    VLW

    quinta-feira, 18 de fevereiro de 2010 20:45
  • Leonardo, nao esqueca de marcar como resposta, caso lhe tenha sido util, por favor.
    obrigado
    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    quinta-feira, 18 de fevereiro de 2010 21:53
  • Legal, agora uma duvida de chamadas de form

    A primeira tela que aparece no sistema é a SplashSreen, depois dela é a do Login, e depois é a Principal. Qual o form que eu devo colocar no Program.cs ? Qual é a ordem de chamadas ?

    Algumas duvidas:
    1) Para que serviria criar um segundo timer para fechar a aplicacao ?
    2) Para que serve o lblLoading que voçê colocou lá ?
    3) Você disse assim: "Alem dos assemblies, vc pode delegar a alguem a responsabilidade do que esta sendo carregado e assim, manter sua progressbar". Eu não tenho a mínima ideia de como fazer isso, não entendi o que vc disse, ñ tenho experiencia alguma em ProgressBar.

    E que eu sou +/- iniciante em C#, estou aqui me matando p\ aprender tudo sozinho :/ Me desculpa pelas perguntas.


    sexta-feira, 19 de fevereiro de 2010 02:32
  • Essa é a ordem do Program.cs, conforme eu coloquei no primeiro exemplo.
    Primeiro vc abre a splash, depois retira a assinatura do evento e enfim, chama o form principal.

                Application.Run(new SplashScreen());
                AppDomain.CurrentDomain.AssemblyLoad -= CurrentDomain_AssemblyLoad;
                Application.Run(new FrmMain());          


    1 -O segundo timer nao é obrigatorio, mas ele garante um tempinho da tela aberta mesmo que o processo seja muito rapido. Mas como eu disse, isso depende de como voce administrar o processo da splashscreen

    2 - O lblLoading é um label que mostra os assemblies que estao sendo carregando pelo sistema, mas essa foi minha utilizacao, vc iria colocar uma progressa nao é isso?

    3 - A resposta pra sua pergunta é outra pergunta: A progress vai mostrar a progressao de que? Isso que voce precisa saber. Se for algo simples, deixa sua progress e a logica de progressao dela na propria splash. O q eu fiz foi configurar o sistema pra, a cada dll q é carregada, a label exiba o nome do assembly, quando terminar, fecha e inicia o sistema.

    Pode perguntar a vontade, brother. So nao esqueca de marcar as respostas que foram uteis como uteis ou marcar como resposta.

    Abs

    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    • Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 02:51
    sexta-feira, 19 de fevereiro de 2010 02:39
  • 1) Eu coloque lá no tmrLoading interval 2000, então a tela acabou ficando aberta por um tempinho. Fiz certo ?

    2) Se o meu lblLoading não apareceu nada escrito é que não tem assemblies sendo carregado ? pq aqui não apareceu nada. pelomenos se apareceu eu não vi...é estranho. Será que tem algo errado ?

    3) Então eu acho que essa progress bar ai vai dar muito trabalho e eu ñ vou conseguir fazer ele funcionar direito viu. Vc acha que seria legal colocar uma ProgressBar que seria sincrona apenas com o tempo de exibição da tela ?

    Porem agora eu fiquei curioso, pq o meu label não apareceu nada ?
    sexta-feira, 19 de fevereiro de 2010 02:57
  • 1 - Fatalmente, colocar o tmrLoading com 2000 vai fazer a tela demorar mais sim, mas pode ser que feche antes da carga dos assemblies se o tmrClose estiver com tempo menor.
    Na verdade o tmrLoading dispara para percorrer todos os assemblies carregados; Tenta mudar o valor pro tmrClose. Mas 2000 é bem pouco. Se nao me engano, 2 segundo.

    2 - Rapaz, isso acontece sim. Faz o seguinte, so como teste:
    Na sua solution, adiciona uma class library, cria uma classe qualquer. No projeto principal, adiciona referencia a essa class library. No construtor da splash, instancia uma classe dessa que vc criou. Assim vc garante que esse assembly vai ser carregado.
    Isso como teste. Vc pode colocar tambem um breakpoint no metodo CurrentDomain_AssemblyLoad do program.cs pra saber se tem algum assemlby sendo carregado;

    3 - A splash costuma ser puramente visual entao pode ser que a progress so com o tempo ja baste sim. Mas pra saber se vai dar trabalho, volto a pergunta, evolucao de que a progress deve apresentar?
    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    • Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 03:16
    sexta-feira, 19 de fevereiro de 2010 03:05
  • 1) então eu voltei o tmrLoading para 100, acho q estava assim. Criei um tmrClose de 5000 se for 5s deve ser bom. Mas como eu controlo a saida do form perante estes 5000 ?

    2) então eu acho q eu não sei oq é class librar. Sei que tem uma pasta aqui chama App_Class e dentro dela tem todas as classes que eu uso no programa. Não sei como é.

    3) Então a evolução dela seria a duração do SplashScreen. Se ele tem 5s, a progress bar vai 0% até 100% durante os 5s. O que acha ?
    sexta-feira, 19 de fevereiro de 2010 03:19
  • 1 - Acho que 5s ta de bom tamanho;

    2 - Vamos fazer o simples entao e ja pulamos pra 3 - No seu caso, pra simplificar acho que podemos ficar so com a progress e esquecer os assemblies. Vai ter mais utilizadade.
    Coloca a progress e faz o timer atualizar ela. quando acabar, fechar o form. Nem vai precisar do segundo timer;
    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    • Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 03:36
    sexta-feira, 19 de fevereiro de 2010 03:25
  • Já que não vamos mais exibir os nomes, posso pagar tudo oq tem dentro do tmrLoading e fazer isso dentro dele ?

    Como faço o timer atualizar o Progress ?
    sexta-feira, 19 de fevereiro de 2010 03:29
  • pode sim. e o tmrClose pode parar de usar tbm:

    no tmrLoading:

     

    if (progressBar.Step < progressBar.Maximum)

    progressBar.PerformStep();

     

    else

    Close();

    nao testei mas acho q isso funciona


    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    sexta-feira, 19 de fevereiro de 2010 03:33
  • o progress não mostra nada e trava na splash screen
    sexta-feira, 19 de fevereiro de 2010 03:36
  • errei as properties

     

    if (progressBar.Value < progressBar.Maximum)

    progressBar.PerformStep();

     

    else

    Close();


    nao esquece de setar na progress o maximum do jeito que vc quer, o value inicial como 0 e o step como 1.

    e coloca o timer com 1000 tambem.
    testa ai e me fala


    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    • Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 04:05
    sexta-feira, 19 de fevereiro de 2010 03:44
  • ainda trava, coloquei assim:

            private void tmrLoading_Tick(object sender, EventArgs e)
            {
                if (progressBar.Value < progressBar.Maximum)
                    progressBar.PerformStep();
                else
                    Close();
            }
    no timer o interval está 1000
    • Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 04:05
    • Não Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 04:05
    sexta-feira, 19 de fevereiro de 2010 03:49
  • qual o maximo que esta sua progress?

    ela ta se movendo?

    coloca um breakpoint nesse evento e ve o que ta acontecendo. de repente ta rodando ai pra sempre
    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    sexta-feira, 19 de fevereiro de 2010 03:52
  • está em 100 o max.

    está

    pelo que eu vi aqui a tela do splashscreen fica + tempo rodando, porem depois desse tempo o prog inicia, mas o progress não evolui. Isso com o step 10, se coloca o step 1 demora eras. o valor está sendo incrementado. Ele está saindo do if. Mas está demorando p\ iniciar o prog.

    Ah agora eu consegui, coloque o timer para 100, e o step 1, agora deu certo !!!
    sexta-feira, 19 de fevereiro de 2010 03:57
  • entao. Maximum em 100 step em 10, blz. Se o timer esta disparando a cada um segundo, temos um total de 10 segundos. blz

    saindo do if eu ao entendi. vc tem que debuggar pra saber quando entra no timer, qual o value e qual o maximum.
    qual a condicao do if deve ser atendida? ta caindo no progressBar.performStep?

    por curiosidade, troca a linha de

    progressBar.PerformStep();

    por

    progressBar.Value += progressBar.Step;

    mas debuga e ve o que ____.

    esse codigo é o mais simples possivel, nao tem misterio.
    se nao funcionar, eu ate te recomendo a acabr com a tela de splash e fazer ela de novo do zero.


    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    • Marcado como Resposta Henrique Alonso sexta-feira, 19 de fevereiro de 2010 04:09
    sexta-feira, 19 de fevereiro de 2010 04:04
  • está caindo sim no progressBar.performStep, e essa nova linha deu certo tambem !!!!

    sabe eu faço SI, to no 6º termo, e sabe qndo eu vou aprender isso lá ? nunca. grande parte das coisas eu vejo hj q é aprender na prática.

    e eu gostaria de te agradecer pela ajuda e pela atenção !

    obrigado
    sexta-feira, 19 de fevereiro de 2010 04:09
  • Entao funcionou? que bom. Nao sei pq nao funcionava antes. Mas enfim...

    Q isso, irmao. Sempre que precisar. E espero que sua caminhada seja de sucesso e voce tenha principalmente a oportunidade de aprender as coisas com a pratica. É isso que acontece com quase todo mundo. Tem que cair no mundo mesmo, meter a cara e ir aprendendo.

    Grande abraço
    Gustavo Rocha, MCTS, MCPD, CSM, Arquiteto de Software - http://subindoaladeira.wordpress.com/
    sexta-feira, 19 de fevereiro de 2010 04:12