Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

User LoL

Como fazer listagem de formulários ativos?

Recommended Posts

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?

Share this post


Link to post
Share on other 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.

Edited by 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"

Share this post


Link to post
Share on other 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 :/

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.