Fechar e abrir um form com o mesmo botão

07/02/2017

0

C#

Boa noite!

A duvida é a seguinte: estou no Form1 e clico no botão ai abre o Form2, se eu clicar no botão do Form1 de novo eu quero que o Form2 seja fechado.
Tentei com variaveis booleanas, mas sempre acaba em um loop infinito, o form sempre ficava aberto(pelo fato de ser o mesmo botão que fecha e abre, então sempre deixava a variavel true).

Código para exemplo

Form2 form2 = new Form2();
bool i = true;

if(i == true)
{
form2.Show();
i = false;
}
else
{
form2.Close();
i = true;
}


Alguem poderia me ajudar? agradeço desde já :)
Guilherme

Guilherme

Responder

Post mais votado

09/02/2017

Faça assim:


procedure TForm1.Button1Click(Sender: TObject);
begin
   // se o form não estiver criado entao cria
   if NOT Assigned(Form2) then
      Form2 := TForm2.Create(Application);

   // Se estiver visivel fecha, senao mostra
   if Form2.Visible then
      Form2.Close
   Else
      Form2.Show;
end;

Alberto

Alberto
Responder

Mais Posts

08/02/2017

Estevão Dias

Olá Guilherme, tudo bem?

Apesar do seu código omitir esse detalhe, esse código está inserido no evento de clique do botão, certo?
Responder

08/02/2017

Guilherme

Claro.. eu coloquei a variavel bool fora do botão para não ficar resetando, mas agora nao fechar o form.
Exemplo:
1º click abre o form
2º click não faz nada (era pra fechar)
3º click abre outro form

fica assim, abrindo forms e mais forms, mas não fecha nenhum
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