Usuário com melhor resposta
Método Close

Pergunta
-
Olá pessoas,
estou com um problema para fechar e abrir formulários. Acredito que seja simples de resolver mas eu não consegui fazer. O problema é o seguinte: Tenho 2 formulários (Form2 e Form3) no form2 tem um botão que deveria fechar o próprio form2 e abrir o form3. Com o seguinte código:
Public Class Form2 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Me.Close() Form3.ShowDialog() End Sub End Class
Deixando apenas a parte do código: Me.Close(), o Form2 é fechado normalmente, no entanto, quando adicionado: Form3.ShowDialog() o Form2 fica por baixo e não é fechado até que o Form3 seja fechado manualmente. Alguém poderia me ajudar?
Respostas
-
Bom dia Thiago,
Não tenho certeza se em VB é assim também, mas em C# existe o conceito de escopo. Então nesse caso dos forms, o novo form esta no contexto, ou escopo, do form2, e enquanto o novo form estiver em uso não é possível fechar o form2, apenas ocultá-lo. O que eu faria em C# é criar o form3 fora do escopo do form2, e deste apenas chamar o form3 e então fechar o form2.
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Marcado como Resposta Robson William SilvaModerator sexta-feira, 30 de dezembro de 2016 11:03
Todas as Respostas
-
Boa tarde ThiagoPG,
Você pode tentar configura as propriedades do projeto selecionando "When last form closes" no dropdown "shutdown mode"
Menu "Project" -> Propriedades ...-> Aba da aplicação
Encontre o "Shutdown mode"
Mude de "When startyp form closes" para "When last form closes"
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
-
É necessário realmente fechar o form?
Se não, você poderia tentar usar o "Me.Hide()", para ocultar o form.
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Pode ser feito assim:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Hide() Form3.ShowDialog() Close() End Sub
Att,
Antero Marques
____________________________________________________________________________Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta. O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.
- Editado Antero Marques quarta-feira, 28 de dezembro de 2016 20:19
-
Eu fiz utilizando o Me.Hide(), ou apenas o Hide(), funciona, para o que eu queria dá certo, no entanto, gostaria de entender pq do outro jeito não funciona, pelo o que observei parece que o método ShowDialog() que não deixa o form anterior ser fechado.
-
Bom dia Thiago,
Não tenho certeza se em VB é assim também, mas em C# existe o conceito de escopo. Então nesse caso dos forms, o novo form esta no contexto, ou escopo, do form2, e enquanto o novo form estiver em uso não é possível fechar o form2, apenas ocultá-lo. O que eu faria em C# é criar o form3 fora do escopo do form2, e deste apenas chamar o form3 e então fechar o form2.
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Marcado como Resposta Robson William SilvaModerator sexta-feira, 30 de dezembro de 2016 11:03
-