Usuário com melhor resposta
Splash Form com C#

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:
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());
}
Todas as Respostas
-
Livarni,
De uma olhada desse links acredito que resolverão seu problema.
http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=1338262&SiteID=21
http://www.c-sharpcorner.com/UploadFile/yougerthen/102032008073718AM/1.aspx
Abraços,
Leandro Rodrigues
http://www.codeproject.com/KB/dialog/SplashCS.aspx
-
-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.
-
Olá Livarni,
Já tentou algo como.
Code SnippetDefault 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
-
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 ...
-
Dê uma olhada no tópico do link:
http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=2010782&SiteID=21
-
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
-
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 ...
-
-
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());
}
-
-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...