1. Introdução
Tenho visto nos fóruns muita gente perguntando como fazer para abrir Forms dentro de um Form principal em aplicações Windows Forms, para isso é necessário entender o que é MDI e suas utilidades.
MDI significa “Multiple Document Interface”, o conceito dessa interface é abrir várias janelas dentro de uma janela principal, ou seja, adicionar diversas “janelas filhas” dentro de uma “janela pai”, exemplos dessa interface são os conhecidos Microsoft Word, Excel, etc..
Uma interface diferente seria o SDI, que significa “Single Document Interface”, nesse caso cada Form aberto representa uma janela diferente na aplicação, um exemplo é o Internet Explorer.
Neste artigo, vamos criar um projeto em C# que engloba os principais conceitos da interface MDI, para quem prefere VB.NET não se preocupe, no final do artigo está disponível o sample também em VB.NET.
2. Crie a Interface
Crie um novo projeto do tipo Windows Forms e chame de ProjetoMDI, adicione 4 novos Forms com os seguintes nomes: FormPrincipal, FormFilho1, FormFilho2 e FormFilho3.
Para o FormPrincipal, vá até a janela de propriedades e defina a propriedade WindowState como Maximized para que a janela abra em tela cheia.
Crie um MenuStrip no FormPrincipal e chame-o de mnuPrincipal e crie a seguinte estrutura de itens de menu (MenuItems):

Figura 1: Estrutura do menu principal
3. Mão no Código!
Clique duas vezes no mnuAbrirFilho1 e adicione o seguinte código:
Listagem 1: Abrindo um form da forma comum
private void mnuAbrirFilho1_Click(object sender, EventArgs e)
{
FormFilho1 form = new FormFilho1();
form.Show();
}Compile e execute a aplicação, clique no menu “Abrir Filho 1″ e repare que o FormFilho1 foi aberto em outra janela (interface SDI), veja que ao minimizar a janela aberta esta, fica na barra do menu iniciar.
Como fazer para abrir dentro da janela principal? Serão dois passos simples. Primeiro precisamos dizer que o FormPrincipal é um MdiContainer, ou seja, ele pode ter Forms filhos dentro dele, para isso configure a propriedade IsMdiContainer como true no FormPrincipal. Feito isso, precisamos fazer uma alteração no nosso código onde abrimos o FormFilho1 dizendo quem será o “pai” dele, ou seja, dentro de qual janela ele abrirá, fazemos isso pela propriedade MdiParentde FormFilho1:
Listagem 2: Abrindo um form dentro do form principal
private void mnuAbrirFilho1_Click(object sender, EventArgs e)
{
FormFilho1 form = new FormFilho1();
form.MdiParent = this;
form.Show();
}Se você não sabe o que significa esse “this”, nada mais é que a instância do Form no qual você está trabalhando, dessa forma, falamos que o “pai” de FormFilho1 é o Form atual “this” que é o FormPrincipal (No VB.NET o “this” é o mesmo que “Me”).
Agora adicione os códigos para abrir os outros Forms:
Listagem 3: Abrindo os demais forms no formato MDI
private void mnuAbrirFilho2_Click(obje
...
Exibição do post interrompida. Para ler conteúdo completo,
clique aqui