Csharp - Fechar form aberto ao clicar em botão
20/04/2015
0
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
Posts
20/04/2015
Randrade
Se possível, poste o código que está utilizando para abrir os forms.
20/04/2015
Nathalia
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();
}
20/04/2015
Carlos Bittencourt
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.
20/04/2015
Alisson Santos
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.
21/04/2015
Nathalia
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?
Clique aqui para fazer login e interagir na Comunidade :)