none
Splash Form com C# RRS feed

  • Pergunta

  •  

    Seguinte pessoal,

     

    Estou precisando usar um Form com efeito Splash e depois de concuido o tempo de vida do Splash a aplicação seguir e iniciar ao Form principal onde terei as funções do aplicativo:

    Procurei na internet e no forum mas não consegui ainda encotrar algo relamente que me ajude:

     

    Tenho um Form1 (Splash) e um Form2 (Defautl) onde no Form1 uso o componente Timer para definir o tempo de vida do splash e funciona perfeitamente, o que não consigo é chamar o Form Defautl depois que é finalizado o tempo do splash:

     

    Tenho o seguinte codigo no Splash:

     

    public Form1()
            {
                InitializeComponent();
                EfectTime();                      
            }
            private bool Efect = true;
            private void SplashTimer_Tick(object sender, EventArgs e)
            {
                if(Efect)
                {
                    this.Opacity += 0.02D;
                }
                if (this.Opacity == 1)
                {
                    Efect = false;
                    this.Close();
                }          
            }
            private void EfectTime()
            {
                SplashTimer.Interval = 190;
                SplashTimer.Tick +=new EventHandler(SplashTimer_Tick);
                SplashTimer.Enabled = true;
                this.Opacity = 0;

            }

     

    esse codigo funciona na boa ... tou com duvida de como chamar o segundo form ... as opções que tentei da um loop direto e fica gerando diversos forms indefinidamente.

     

    Agradeço a ajuda de todos:

     

    domingo, 18 de janeiro de 2009 14:40

Respostas

  • Você não entendeu bem o que está sendo feito no código do link que eu postei.

     

    Aqui, deixe o método de entrada do seu programa assim:

     

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
    
        // Abrimos o SplashScreen.
        Form1 f = new Form1();
        f.ShowDialog();
    
        // Abrimos o Form principal.
        Application.Run(new Form2());
    }
    

     

     

    segunda-feira, 19 de janeiro de 2009 00:12

Todas as Respostas

  •  

    -Pô eu já tinha visto esses links ai e não ajudaram nã afinal eu já tou com o splash funcionando o que não tou conseguindo é puxar o form seguinte e deixar ele rodando.

    Quando finalizo o form e chamo o seguinte, está iniciando milhares de forms indefinidamente.

    Não tou sabendo como chamar o proximo form so isso.

     

    Mas vlw de qualquer jeito.

    domingo, 18 de janeiro de 2009 20:47
  • Olá Livarni,

     

    Já tentou algo como.

     

    Code Snippet

    Default objFormDefault = new Default();

    objFormDefault.Show();

     

     

    Teoricamente deve funcionar.

    Caso não funcione especifique um pouco mas como por exemplo como vc esta tentando chamar seu Default, porque eu não consegui visualizar isso no seu código.

     

    Abraços,

     

    Leandro Rodrigues

    domingo, 18 de janeiro de 2009 20:57
  •  

    Eh ... Tentei sim ... no caso se eu criar uma instancia do meu form e usar o metodo Show(); quando executo o meu programa ele inicia o splash e funciona normal , mas quando seria pra iniciar o form .... o programa inicia indefinidamente o form ...

     

    Estora na tela um monte de forms consecutivamente ...

     

     

    domingo, 18 de janeiro de 2009 22:48
  • Livarni,

     

    Deguba seu código e verifique porque ele chame mutas vezes, verifique se ele entra num loop se ele fica chamando "zilhões de vezes" provavelmente entrou em alguem loop infinito, verifique os métodos e propriedades dessas sua classe e ve se algum método desse desabilita esse número de chamadas infinito.

    Quando debugar debuga pelo inicio ou seha Init.

     

    Abraços,

     

    Leandro Rodrigues

    domingo, 18 de janeiro de 2009 23:09
  • static class Program
        {
            [STAThread]
            static void Main()
            {
               
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());   // Form1 é o nome do meu form que usa o Efeito Splash
                
            }
        }

     

    esse é o código do meu program.cs ...

     

    se eu colocar a instancia do form splash ai ... vai ficar abrindo um monte de forms ...

    carrego meu form splash no program.cs

     

    e no codigo do form splash eu faço o efeito com timer e tento chamar o proximo form a seguir:

     

     

    public Form1()
            {
                InitializeComponent();
                EfectTime();                      
            }       
            private bool Efect = true;
            private void SplashTimer_Tick(object sender, EventArgs e)
            {
                if(Efect)
                {
                    this.Opacity += 0.02D;
                }
                if (this.Opacity == 1)
                {
                    Efect = false;
                    this.Close();
                }           
            }       
            private void EfectTime()
            {
                SplashTimer.Interval = 190;
                SplashTimer.Tick +=new EventHandler(SplashTimer_Tick);
                SplashTimer.Enabled = true;
                this.Opacity = 0;
            }

     

    Aqui ta o efeito splah ... agora não tou sabendo onde colocar o metodo de puxar o proximo form ...

     

    domingo, 18 de janeiro de 2009 23:46
  •  

    Debugando o Codigo ele relamente entra em uma loop infinito que chama o objeto (proximo form ) indefinidamente;

     

     

    domingo, 18 de janeiro de 2009 23:51
  • Você não entendeu bem o que está sendo feito no código do link que eu postei.

     

    Aqui, deixe o método de entrada do seu programa assim:

     

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
    
        // Abrimos o SplashScreen.
        Form1 f = new Form1();
        f.ShowDialog();
    
        // Abrimos o Form principal.
        Application.Run(new Form2());
    }
    

     

     

    segunda-feira, 19 de janeiro de 2009 00:12
  •  

    -Pow Valeu  MacGyver funcionou sim ... no começo coloquei esse mesmo codigo, só que a instancia do ooutro form antes do codigo:

     

    Application.Enable ....

     

    O que estava gerando erro ... depois tentei alterar e enfim ...

     

    Funcionou e obrigado pela ... Ajuda ...

     

    Obrigado a Todos que me  ajudaram a tirar essa duvida...

     

    segunda-feira, 19 de janeiro de 2009 00:47