Fechar um Form de Login Sem Encerrar o Projeto CSharp
15/10/2014
0
Olá Galera, to com uma duvida sobre como fechar um form e abrir outro sem que feche todo o projeto eu estou migrando do VB.NET para C#, e to com essa duvida, com o vb.net eu usava o metodo tentei com o C# Mas nao existe, se uso encerra todo o projeto a unica solução que me sobrou foi o que apenas esconde o form, mas ele continua ativo (eu acho...), isso pode deixar o programa lento consumir muita memoria ??
Me.Finalize()
this.finalize();
this.close();
this.Hide();
Paulo Ricardo
Curtir tópico
+ 0
Responder
Posts
15/10/2014
Lucas Rocha
Cara eu acho que a única solução é usar:
Só que quanto mais forms abrir mais memoria vai pro espaço, então a solução é deixar sempre o primeiro form em hide() e fechar os outros.
Para fechar o form utilize o
this.Hide();
Só que quanto mais forms abrir mais memoria vai pro espaço, então a solução é deixar sempre o primeiro form em hide() e fechar os outros.
Para fechar o form utilize o
{ this.Close(); }
Responder
15/10/2014
Joel Rodrigues
O projeto encerra quando você fecha o form de login devido a ele ser o primeiro form da aplicação. Para resolver isso, você deve colocar o form principal como sendo o primeiro, ou seja, a tela principal da sua aplicação. O form de login deve ser secundário e deve ser aberto no evento Load desse form principal.
Para fazer isso, vá até a classe Program (arquivo Program.cs) e no método Application.Run, mude do form de login para o principal. Por exemplo:
Isso fará com que o primeiro form a ser aberto seja o FormPrincipal. Mas como o de login deve ser apresentado para o usuário antes que a tela principal seja aberta, você deve ir no evento Load do FormPrincipal, chamar o de login, e só mostrar o principal se o login for efetuado. Por exemplo:
Como esse código está no evento Load, isso ocorrerá antes do form principal ser aberto (evento Shown). Assim, se o usuário fechar o form de login, o Application.Exit fechará a aplicação antes do form principal aparecer. Caso o login ocorra normalmente e o DialogResult for true, o fluxo do código seguirá normalmente no form principal, fazendo com que ele seja exibido.
Espero ter sido claro.
Para fazer isso, vá até a classe Program (arquivo Program.cs) e no método Application.Run, mude do form de login para o principal. Por exemplo:
Application.Run(new FormPrincipal());
Isso fará com que o primeiro form a ser aberto seja o FormPrincipal. Mas como o de login deve ser apresentado para o usuário antes que a tela principal seja aberta, você deve ir no evento Load do FormPrincipal, chamar o de login, e só mostrar o principal se o login for efetuado. Por exemplo:
private void FormPrincipal_Load(object sender, EventArgs e) { using (FormLogin Form = new FormLogin()) { Form.ShowDialog(); // Aqui considerei que se o login for efetuado com sucesso, o DialogResult será OK if (Form.DialogResult != DialogResult.OK) { Application.Exit(); return; } } }
Como esse código está no evento Load, isso ocorrerá antes do form principal ser aberto (evento Shown). Assim, se o usuário fechar o form de login, o Application.Exit fechará a aplicação antes do form principal aparecer. Caso o login ocorra normalmente e o DialogResult for true, o fluxo do código seguirá normalmente no form principal, fazendo com que ele seja exibido.
Espero ter sido claro.
Responder
Clique aqui para fazer login e interagir na Comunidade :)