Jump to content

fechar um form


jarvas
 Share

Recommended Posts

Ola a todos...

Eu tenho um form1 e depois abro um outro form diferente form2.

Há alguma forma de fechar o form1, sem fechar o form2. Mas quando faço form1.close() ou  form1.dispose() - fecha-me mesmo os dois.

Alguém tem alguma sugestão?

Cumps

Link to comment
Share on other sites

Ola,

o teu problema está relacionado com o facto de o form1 ser o form de arranque da app, e ao "mata-lo" ele faz o mesmo á app, se quiseres resolver isso rapidamente, deixa o form1 criado e faz apenas um hide() ao form.

Cumps

Link to comment
Share on other sites

Ok. tá explicado  😁

No Java também não fechava completamente, fazia um this.dispose(), que "adormecia" o form.

É que estou a testar a aplicação num PDA e convém poupar o máximo de recursos da máquina.

Thanks.

Link to comment
Share on other sites

Ola,

o teu problema está relacionado com o facto de o form1 ser o form de arranque da app, e ao "mata-lo" ele faz o mesmo á app, se quiseres resolver isso rapidamente, deixa o form1 criado e faz apenas um hide() ao form.

Cumps

Errado. Com o "hide()" continua a comer recursos à memória.

No VS 2008, e refiro-me ao VB.NET, existe uma opção, nas propriedades da aplicação (Project » Application Properties » Application » Shutdown Mode) e nessa opção deves colocar "When last form closes";

É, agora, uma questão de veres no C#, se também se aplica no mesmo sítio.

Link to comment
Share on other sites

Ola,

Eu sei que o formulario continua a comer recursos, já que apenas é escondido (como o nome indica), isso foi apenas uma maneira

se quiseres resolver isso rapidamente
de resolver o problema, visto que em c# não existe o shutdown mode, necessitando então de se algumas linhas de código para contornar a situação, aqui fica um link sobre isso...

http://forum.imasters.uol.com.br/index.php?/topic/361453-fechar-form-de-login-e-abrir-novo-form-c%23/

Cumps

Link to comment
Share on other sites

Ola,

Eu sei que o formulario continua a comer recursos, já que apenas é escondido (como o nome indica), isso foi apenas uma maneira  de resolver o problema, visto que em c# não existe o shutdown mode, necessitando então de se algumas linhas de código para contornar a situação, aqui fica um link sobre isso...

http://forum.imasters.uol.com.br/index.php?/topic/361453-fechar-form-de-login-e-abrir-novo-form-c%23/

Cumps

Sim,

Mas é má prática. Imagina que o 1º Form contém montes de código. Quando o utilizador fechar os outros forms, a aplicação, sem ele saber, continua a funcionar no background, só é possível terminá-la nos processos e no entanto, vai-lhe comendo recursos.

Link to comment
Share on other sites

Certo, concordo que não seja obviamente boa pratica, por isso deixei o link de uma das soluções mais indicadas, em relação ao facto da aplicação ficar a correr quando fechas os forms, isso já tem que ser controlado pelo programador para prevenir que isso não aconteça, obrigando a aplicação a terminar em um dos formulários visíveis, por exemplo, tens um "splash" form que é exibido quando inicia a aplicação e que escondes, e tens um formulário principal da aplicação, obviamente que tens que prevenir que se for fechado o teu formulário principal vais terminar a aplicação.  🙂

Deixo aqui mais um link sobre este assunto:

http://www.programmersheaven.com/mb/csharp/343992/344400/re-application-tab-in-c/

Cumps

Link to comment
Share on other sites

ha!, usas o this.hide() ou FormEmCausaJaDeclaradoAcima.hide();

Agora tens q ter nossão que quando fechares todos os forms a aplicação continua aberta apesar de nao aparecer nada.

Para isso deves ter um form q tenha:

Application.exit() (algo assim, analisa as varias opções) -  este comando vai fechar definitivamente a tua aplicação

EDIT:

Errado. Com o "hide()" continua a comer recursos à memória.

No VS 2008, e refiro-me ao VB.NET, existe uma opção, nas propriedades da aplicação (Project » Application Properties » Application » Shutdown Mode) e nessa opção deves colocar "When last form closes";

É, agora, uma questão de veres no C#, se também se aplica no mesmo sítio.

Sim o hide() mantem o form activo. E quantos mais abrires mais memoria come. A solução e deixar sempre o primeiro em hide() e destruir os que vamos fechando.

Para isso é necessario código que mantenha o from1 activo sempre, e os outros sejam fechados.

A minha sugestão é:

Mal o form1 seja aberto, fazes Hide nele e abres logo o outro Form2 (fazendo com q o form2 seja o principal de todos) apartir dai fazes sempre .close() em todos

O form1 serviria apenas como "chamador" do form principal.

Quando quiseres realmente sair da aplicação usas o comando "Application.exit()"

<

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.