Fechar e abrir um form com o mesmo botão

C#

07/02/2017

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

Curtidas 0

Melhor post

Alberto

Alberto

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;

GOSTEI 1

Mais Respostas

Estevão Dias

Estevão Dias

07/02/2017

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?
GOSTEI 0
Guilherme

Guilherme

07/02/2017

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
GOSTEI 0
POSTAR