Ir para o conteúdo
User LoL

Como fazer listagem de formulários ativos?

Mensagens Recomendadas

User LoL

Tenho um form Mdi pai, e nele um botão com esse código :

Dim novo = New Form2
    novo.Show()
    novo.MdiParent = Me

Ele chama um novo form2 e o indica como seu Mdi filho. A questão é, como eu faço uma listagem de quantos form mdi filho estão ativos?Gostaria de adicionar essa listagem em uma toolstrip por exemplo,com checks,indicando qual dos forms ativos está em foco, alguém poderia me ajudar?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Me.MdiChildren.Count

Se precisares de verificar algo em todos, basta iterar MdiChildren.

Por exemplo, uma forma de listar os que estão não minimizados vs totais:

Dim Normais As Integer = 0
For Each Filho As Form In Me.MdiChildren
   If Not Filho.WindowState = FormWindowState.Minimized Then Normais += 1
Next
Me.Text = Normais & "\" & Me.MdiChildren.Count

Quanto ao activo, a propriedade ActiveMdiChild devolve-te o form que está activo.

É aplicares a lógica como te for mais conveniente.

Editado por ribeiro55

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
User LoL

Certo,para fazer a contagem dos Mdi ativos, estou usando

ToolStripComboBox1.Items.Add(MdiChildren.Count())

O problema é que eu vou ter que atualizar cada vez que um Mdi filho for aberto ou fechado? e como faço essa atualização? porque estou usando um combobox, entao os itens vao se acumulando tambem :/

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Sim, tem de ser actualizado sempre que há alguma alteração. Que outra forma? :)

Basta registares handlers ao criares as forms. Vou assumir que tens um método chamado "Actualizar" que vai precisamente fazer as contagens:

Dim novo As New Form2
AddHandler novo.FormClosed, AddressOf Actualizar
AddHandler novo.GotFocus, AddressOf Actualizar
AddHandler novo.LostFocus, AddressOf Actualizar
novo.MdiParent = Me
novo.Show()
Actualizar()

Isto faz com que os eventos disparados por cada form filho causem a chamada do método Actualizar.

Só tens de adequar os momentos de actualização. Estou a presumir quando fecham, quando são focadas e quando perdem o foco.

No limite, podes criar os teus próprios eventos para acções que tenhas criado no form2


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.