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
Me.Finalize()
tentei
this.finalize();
com o C# Mas nao existe, se uso
this.close();
encerra todo o projeto a unica solução que me sobrou foi o
this.Hide();
que apenas esconde o form, mas ele continua ativo (eu acho...), isso pode deixar o programa lento consumir muita memoria ??
Paulo Ricardo

Paulo Ricardo

Responder

Posts

15/10/2014

Lucas Rocha

Cara eu acho que a única solução é usar:
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:
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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar