Csharp - Fechar form aberto ao clicar em botão

20/04/2015

0

Pessoal, boa tarde!
O meu programa possui 7 botões: botão1, botão2, botão3,... que são linkados, respectivamente, com sete formulários form1, form2 e form3,.... Suponhamos que eu tenha clicado no botão1 e tenha aberto o form1, gostaria que quando eu clicasse no botão4 o form1 fechasse e abrisse o form4.
Não sei se é possível, mas gostaria que através de algum comando a aplicação reconhecesse o form que está aberto e fechasse quando eu clicasse em algum botão.
Nathalia

Nathalia

Responder

Posts

20/04/2015

Randrade

Olá Nathalia,

Se possível, poste o código que está utilizando para abrir os forms.
Responder

20/04/2015

Nathalia

Olá Randrade,

Estou utilizando o seguinte código para abrir os formulários:

private void menucadastro_Click(object sender, RoutedEventArgs e)
{
Cadastro CAD = new Cadastro();
CAD.Show();
}
Responder

20/04/2015

Carlos Bittencourt

Nathalia, faça uma pesquisa por "Application.OpenForms" ele retorna a lista de formulários abertos.

Apenas para que você tenha um melhor entendimento.
- Crie uma aplicação e adicione 3 formulários(Form1, Form2, Form4)
- No formulário principal(Form1) adicione adicione 2 botões

No evento de Click do botão 1 adicione o código conforme abaixo:
private void button1_Click(object sender, EventArgs e)
{
//Para exibir o Form2
Form2 form = new Form2();
form.Show();
}


No evento de Click do botão 2 adicione o código abaixo:
private void button2_Click(object sender, EventArgs e)
{

Form2 fecharForm = new Form2();
if (Application.OpenForms.OfType<Form2>().Count() > 0)
{
fecharForm = null;
foreach (var item in Application.OpenForms)
{
if (item.ToString().Contains("Form2"))
{
fecharForm = ((Form2)item);
}
}
if (fecharForm != null)
fecharForm.Close();
}
Form4 form4 = new Form4();
form4.Show();
}

No form2 adicione o seguinte código
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
MessageBox.Show("O Form2 será fechado");
}
Este código faz a aplicação exibir uma mensagem antes de Fechar o formulário e abrir o novo formulário.
Lembrando que este código só permite fechar um formulário caso esteja aberto mais de uma instância do Form2.

Espero ter ajudado.
Responder

20/04/2015

Alisson Santos

Boa noite Nathalia. O código abaixo irá te auxilizar

for(int intIndex = Application.OpenForms.Count - 1; intIndex >= 0; intIndex--)
            {
                if(Application.OpenForms[intIndex] != this)
                    Application.OpenForms[intIndex].Close();
            }

            Form2 form = new Form2();
            form.Show();


Lembrando que esse código irá fechar todas as janelas abertas e após encerrar todas as janelas você faz a chamada da nova janela.
Responder

21/04/2015

Nathalia

Boa noite Carlos Bittencourt e Alisson,
Deu super certo, era isso mesmo que eu queria, muito obrigada!!
Agora, tem um único problema, se vocês puderem me ajudar...

Estou usando o Visual Studio 2015, os formulários são em Windows form mesmo, mas o principal em WPF Application e não tem a função ''Application.OpenForms'', essa função só aparece se eu criar a aplicação em WindowsFormApplication, mas o meu programa já está criado em WPF e editei todo o design.

Vocês sabem qual é o comando no WPF Application?
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