Como calcular a quantidade de formulários abertos em C#
Em aplicações Windows Forms, pode ser necessário acompanhar quantos formulários estão abertos ao mesmo tempo. Isso pode ser útil para gerenciar recursos ou limitar o número de instâncias de um formulário específico. Neste post, vamos explorar como calcular a quantidade de formulários abertos em C#.
Exemplo de código
using System;
using System.Linq;
using System.Windows.Forms;
namespace ContarFormularios
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnAbrirFormSecundario_Click(object sender, EventArgs e)
{
FormSecundario formSecundario = new FormSecundario();
formSecundario.FormClosed += FormSecundario_FormClosed; // Assina o evento de fechamento
formSecundario.Show();
AtualizarQuantidadeFormularios();
}
private void FormSecundario_FormClosed(object sender, FormClosedEventArgs e)
{
AtualizarQuantidadeFormularios(); // Atualiza a quantidade quando o formulário secundário é fechado
}
private void AtualizarQuantidadeFormularios()
{
// Conta o número de formulários abertos
int quantidade = Application.OpenForms.Cast<Form>().Count();
lblQuantidadeFormularios.Text = $"Quantidade de Formulários Abertos: {quantidade}";
}
}
}
Explicação do código
- btnAbrirFormSecundario_Click: Este método é chamado quando o botão para abrir o formulário secundário é clicado. Um novo objeto
FormSecundario
é criado e exibido. - FormSecundario_FormClosed: Este evento é acionado quando o
FormSecundario
é fechado. Ele chama o métodoAtualizarQuantidadeFormularios
para atualizar a contagem. - AtualizarQuantidadeFormularios: Este método usa
Application.OpenForms
para contar o número de formulários abertos. O resultado é exibido em umLabel
.
Outro exemplo prático
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace ContarFormulariosAbertos
{
public partial class MainForm : Form
{
private List<Form> openForms = new List<Form>(); // Lista para armazenar formulários abertos
public MainForm()
{
InitializeComponent();
}
private void buttonOpenForm_Click(object sender, EventArgs e)
{
OpenNewForm();
}
private void OpenNewForm()
{
// Cria uma nova instância do formulário secundário
Form newForm = new Form();
newForm.Text = "Formulário " + (openForms.Count + 1);
newForm.FormClosed += NewForm_FormClosed; // Associa o evento de fechamento
// Exibe o formulário
newForm.Show();
openForms.Add(newForm); // Adiciona à lista de formulários abertos
UpdateOpenFormsCount(); // Atualiza a contagem
}
private void NewForm_FormClosed(object sender, FormClosedEventArgs e)
{
// Remove o formulário fechado da lista
openForms.Remove(sender as Form);
UpdateOpenFormsCount(); // Atualiza a contagem
}
private void UpdateOpenFormsCount()
{
labelOpenFormsCount.Text = $"Formulários Abertos: {openForms.Count}"; // Atualiza o label
}
}
}
Explicação do código
- openForms: Uma lista que armazena as instâncias dos formulários abertos;
- buttonOpenForm_Click: Este método é chamado quando o botão para abrir um novo formulário é clicado. Ele chama o método
OpenNewForm()
; - OpenNewForm: Este método cria uma nova instância de um formulário, define seu título e associa o evento
FormClosed
ao métodoNewForm_FormClosed
, que é chamado quando o formulário é fechado. Em seguida, ele exibe o novo formulário e o adiciona à listaopenForms
; - NewForm_FormClosed: Este método é chamado quando um formulário é fechado. Ele remove o formulário da lista
openForms
e atualiza a contagem de formulários abertos; - UpdateOpenFormsCount: Este método atualiza o
Label
para exibir a quantidade atual de formulários abertos.
Para identificar a quantidade de formulários abertos na sua aplicação de forma a tomar determinadas decisões, basta utilizar OpenForms, conforme o código a seguir:
int qtdeFormsAbertos = Application.OpenForms.OfType<MeuFormulario>().Count();
Calcular a quantidade de formulários abertos em uma aplicação C# é uma tarefa simples utilizando a propriedade Application.OpenForms
.
Com essa abordagem, você pode gerenciar melhor os recursos da sua aplicação e fornecer uma interface mais interativa para o usuário. Experimente expandir essa funcionalidade para adicionar controles adicionais ou interações com os formulários abertos!
Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits
Sobre o Autor
0 Comentários