- No Visual Studio, va no menu File -> New -> Project;
- Na janela "New Project", escolha o tipo do projeto 'Visual C#";
- Em Template escolha "Windows Forms Application";
- No campo "Name" coloque o nome do projeto, vamos colocar TesteMDI;
- Em "Location" escolha um local de sua preferencia para salvar o projeto
- De um OK.
Pronto, nosso formulario principal ja esta criado. Vamos mudar as propriedades necessarias para que ele seja nosso formulario principal, o formulario Pai de nossa aplicação.
Para isso clique uma vez no form, e na janela "Properties" mude as seguintes propriedades como a seguir.
(Name) -> FrmPai
Text -> Formulario Pai
WindowState -> Maximized
IsMdiContainer -> True
A propriedade "IsMdiContainer" que torna o nosso form um formulario Pai.
Nosso proximo passo é criar um segundo form que sera chamado atraves do formulario Pai. Para iss o, clique com o botão direito do mouse sobre o projeto no "Solution Explorer", vá em Add e logo após em "Windows Form ..."
Na janela que se abriu mude o campo Name para FrmFilho e de OK. O nosso formulario filho foi cri ado com sucesso, agora vamos alterar o titulo do FrmFilho como a seguir:
Text -> Formulario Filho
Bem, agora vamos voltar para o formulario Pai, pois é de la que chamaremos o formulario filho. A bra o ToolBox e arraste um MenuStrip para o form pai, sera criado uma barra na parte superior do mesmo e um campo esc rito "Type here" onde digitaremos o que vai ser exibido no menu, vamos colocar "Formulario Filho". Após colocar o tex to do menu, clique duas vezes em cima do nome que vc colocou, sera exibido o metodo que vai ser chamado quando clicar mos nesse menu. É nesse metodo que chamaremos nosso form filho. Segue o codigo que deve ser inserido nesse método.
FrmFilho filho = new FrmFilho();
filho.MdiParent = this;
filho.Show();
A propriedade MdiParent de um Form diz qual é o formulario Pai deste. No caso usamos a palavra r eservada this, que indica o próprio formulário Pai.
Pressione F5 para executar a aplicação. Após aberto o formulario principal, clique no menu super ior e você verá que o formulario Filho sera aberto dentro do formulario Pai e não em uma janela separada.
Um detalhe, é que cada vez que você clicar no menu, sera criado uma nova janela, isso em uma apl icação não é uma boa, ja após aberta uma tela de cadastro de clientes por exemplo, não queremos que a mesma seja aber ta novamente. Para resolver isso, crie um método no formulario Pai que verifica se existe o formulario, se não existi r ele cria, se existir somente da foco no mesmo.
Para isso, clique no formulario Pai em nosso projeto e depois pressione F7, será exibido o codig o fonte do formulario, logo apos ao construtor do form, crie o metodo como a seguir:
//Metodo construtor
public FrmPai()
{
InitializeComponent();
}
//metodo para abrir formulario filho
private void abreFormFilho(Form form)
{
foreach (Form formFilho in this.MdiChildren)
{
if (formFilho.GetType() == form.GetType())
{
formFilho.Focus();
return;
}
}
form.MdiParent = this;
form.Show();
}
Desca para o final do código, onde esta o metodo que chama o nosso formulario filho atravez do m enu, tire as três linhas que inserimos anteriormente e digite o codigo a seguir.
this.abreFormFilho(new FrmFilho());
Pronto, agora é só executar o projeto de novo com F5 e você vera que mesmo clicando mais vezes n o menu, não será criado varias janelas do FrmFilho.
Bem, fico por aqui. Agradeço a paciência e espero ter ajudado. Dúvidas, sujestões ou críticas entrem em contato.