Uma das últimas solicitações de um dos nossos clientes foi que criássemos um menu Janela para mostrar formulários abertos.
Confesso que pensei em soluções mirabolantes para resolver isso até que conversei com meu amigo Dennes Torres e ele me disse que havia visto alguma propriedade no componente Menu que resolveria esse problema.
Verificando o componente, encontrei a propriedade MdiWindowListItem onde eu especifico qual MenuItem irá mostrar os Formulários Filhos.
Por mais simples que seja isso, decidi criar esse artigo para explicar sobre formulários MDI (Multiple Document Interface) Pai e Filho que, caso não estejam configurados corretamente não adiantará nada especificar o MenuItem na propriedade MdiWindowListItem.
Vamos à criação!
Crie um projeto de Windows Forms chamado MenuJanela e nele renomeie o Form1 para frmPai. No frmPai altere a Propriedade IsMContainer para true como na imagem abaixo:
Quando fazemos isso, estamos dizendo que o frmPai será um container para outros formulários, outro detalhe que perceberá é que a cor de fundo do formulário irá mudar, vai ficar mais escura.
Agora crie mais dois formulários frmFilho1 e frmFilho2. No frmPai adicione o componente MenuStrip e nele crie os menus como na imagem a seguir:
O menu Janela não terá nenhum Item.
Selecione o componente Menu e informe na propriedade MenuWindowItemList qual MenuItem irá mostrar os formulários filhos.
Ok, nesse momento informamos que o Menu Janela irá receber os formulários filhos do frmPai.
Vamos agora escrever o código necessário para cada item do Menu Formulários abrir o seu respectivo form:
Detalhe importante: Se a propriedade MdiParent do formulário filho não for setada com o formulário pai dele, ele não aparecerá no menu Janela.
Segue imagem do menu Janela funcionando:
Obrigado e até a próxima!