Array
(
)

Fechar um Form de Login Sem Encerrar o Projeto CSharp

Paulo Ricardo
   - 15 out 2014

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

Lucas Rocha
|
MVP
    15 out 2014

Cara eu acho que a única solução é usar:
#Códigothis.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
#Código {
this.Close();
}

Joel Rodrigues
   - 15 out 2014

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:
#CódigoApplication.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:

#Códigoprivate 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.