Csharp - Fechar form aberto ao clicar em botão
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.
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
Curtidas 0
Respostas
Randrade
20/04/2015
Olá Nathalia,
Se possível, poste o código que está utilizando para abrir os forms.
Se possível, poste o código que está utilizando para abrir os forms.
GOSTEI 0
Nathalia
20/04/2015
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();
}
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();
}
GOSTEI 0
Carlos Bittencourt
20/04/2015
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.
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.
GOSTEI 0
Alisson Santos
20/04/2015
Boa noite Nathalia. O código abaixo irá te auxilizar
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.
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.
GOSTEI 0
Nathalia
20/04/2015
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?
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?
GOSTEI 0