Escolar Documentos
Profissional Documentos
Cultura Documentos
Eu vou usar o SharpDevelop 3.0 mas podemos usar também o Visual C# 2008 Express ou o
Visual Studio 2008.
Abra o SharpDevelop ou o Visual C# Express Edition crie uma nova solução do tipo Windows
Application com o nome usandoMDI;
Vejamos agora como criar formulários filhos (Child) de forma dinâmica e definir
algumas de suas propriedades como titulo, cor, tamanho, etc.
Formulários filhos serão exibidos dentro do formulário MDI que atua como um
container. Para fazer isso vamos criar um menu no formulário MDI com opções.
Defina a propriedade Name para o item Arquivo como mnuArquivo e para Windows como
mnuWindows;
Arquivo mnuArquivo
mnuArquivoNovo
-->Novo mnuArquivoNovoAzul
-->Azul mnuArquivoNovoVermelho
-->Vermelho
->Sair mnuArquivoSair
No evento Click da opção Azul do menu vamos incluir o código que irá criar um novo
formulário e que irá definir algumas de suas propriedades. Veja abaixo como deve ser
o código :
// exibe o formulário
frmAzul.Show();
Observe que para criar o formulário filho criamos uma nova instância de form:
Form frmAzul = new Form();
Nota: O VB .NET possui o recurso My que pode ser usado para abrir um
formulário: My.Forms.NomeFormulário
Como o formulário filho frmAzul esta maximizado ele ocupa todo formulário pai e o
menu
Executando o mesmo código com a propriedade
System.Windows.Forms.FormWindowState do formulário filho definida como
Normal , vemos o formulário contido no formulário pai;
// exibe o formulário
frmAzul.Show();
Então , resumindo :
1- Para definir o formulário principal MDI_Pai como um container MDI definimos sua
propriedade IsMDIContainer como True:
this.IsMDIContainer = true;
Para alterar a cor do fundo do formulário basta incluir a seguinte rotina no evento
Load do formulário ou criar uma rotina e chamá-la no evento de inicialização do
formulário:
private void Form_Load
(object sender,
System.EventArgs e)
{
foreach (Control control
in this.Controls)
{
if (control is MdiClient)
{
control.BackColor =
Color.Red;
break;
}
}
}
Cascade
Tile Horizontal
Tile Vertical
Arranje Icons
E se quisermos fechar todos os formulários filhos ? Simples. crie uma rotina com o
seguinte código:
private void
fecharTodosToolStripMenuItem_Click(object
sender, EventArgs e)
{
foreach (Form mdiChildForm in
MdiChildren)
{
mdiChildForm.Close();
}
}
A seguir informe qual item do menu irá exibir os formulários filhos abertos:
O resultado é exibido a seguir:
Creio que esta é uma introdução que esta de bom tamanho para usar
formulários MDI com C#.
Referências: